#include #include #include #include #include #include #include int main (int argc, char * argv[]) { int sock; int puerto; struct sockaddr_in servidor,cliente; int dirlen; char buf[2000]; int leidos; if (argc<=1) puerto=1234; else sscanf(argv[1],"%d",&puerto); printf("puerto %d\n",puerto); servidor.sin_family=AF_INET; servidor.sin_port=htons(puerto); servidor.sin_addr.s_addr=INADDR_ANY; sock=socket(PF_INET,SOCK_DGRAM,0); if (bind(sock,(struct sockaddr *)&servidor,sizeof(servidor))==-1) { printf("Error: no puedo coger el puerto\n"); exit(-1); } while(1) { dirlen=sizeof(cliente); /* Recibir 1 paquete */ leidos=recvfrom(sock,buf,2000,0,(struct sockaddr *)&cliente,&dirlen); printf("Contestado 1 paquete de %x\n",ntohl(cliente.sin_addr.s_addr)); /* Devolver el paquete */ if (leidos>0) sendto(sock,buf,leidos,0,(struct sockaddr *)&cliente,dirlen); } }