#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);
}
}