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