#include #include #include #include #include #include int main(int argc,char *argv[]) { int sock,c_sock; int puerto; struct sockaddr_in servidor,cliente; char buf[20000]; FILE *f; if (argc<=1) { puerto=1234; } else { sscanf(argv[1],"%d",&puerto); } /* Abrimos el socket */ sock=socket(PF_INET,SOCK_STREAM,0); /* Rellenamos la estructura para pedir puerto */ servidor.sin_family=AF_INET; servidor.sin_port=htons(puerto); servidor.sin_addr.s_addr=INADDR_ANY; if (bind(sock,(struct sockaddr *)&servidor,sizeof(servidor))==-1) { printf("Error!! no puedo coger el puerto!!!\n"); exit(-1); } listen(sock,5); while (1) { int dirlen=sizeof(cliente); c_sock=accept(sock,(struct sockaddr *)&cliente,&dirlen); f = fdopen(c_sock,"w+"); printf("Cliente en %x\n", ntohl(cliente.sin_addr.s_addr)); while ( fgets(buf,20000,f) ) { printf("retransmitiendo: %s",buf); fprintf(f,"%s",buf); } fclose(f); } }