#include #include #include #include #include #include #include #include int main(int argc, char **argv) { int sock,n; struct sockaddr_in addr,in; char buff[4096]; int len=sizeof(in); if ( ( sock = socket(AF_INET, /*TODO*/, IPPROTO_UDP) ) < 0 ) { perror("socket"); exit(1); } /*TODO*/ //Fill in addr struct if ( bind(/*TODO:socket*/, (struct sockaddr *) /*TODO:addr*/, sizeof(addr)) < 0 ) { perror("bind"); exit(1); } for ( ; ; ) { n = recvfrom(/*TODO:socket*/, /*TODO: buffer*/, 4096, 0, (struct sockaddr *)&in, &len); if (n < 0) { perror("recvfrom error"); exit(-1); } buff[n]=0; printf("Received packet from %s:%d\nData: %s\n\n",inet_ntoa(in.sin_addr), ntohs(in.sin_port), buff); snprintf(buff,sizeof(buff),"%d\n",(int)strlen(buff)-1); n = sendto(/*TODO: socket*/, /*TODO:buffer*/, strlen(buff), 0, (struct sockaddr *)&in, sizeof(in)); if (n < 0) { perror("sendto error"); exit(-1); } } }