/* Example UDP server program */ /* Adapted from http://en.wikipedia.org/wiki/Berkeley_sockets */ #include #include #include #include #include #include #include /* for close() for socket */ #include #include int main(void) { /* create socket and socket address data structure */ int sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP); struct sockaddr_in sa; char buffer[1024]; ssize_t recsize; socklen_t fromlen; /* init sa with local interface */ memset(&sa, 0, sizeof sa); sa.sin_family = AF_INET; inet_pton(AF_INET, "127.0.0.1", &(sa.sin_addr.s_addr)); /* sa.sin_addr.s_addr = htonl (INADDR_ANY); */ /* init sa to listening port */ sa.sin_port = htons(7654); fromlen = sizeof(sa); /* bind socket to address:port */ if (-1 == bind(sock,(struct sockaddr *)&sa, sizeof(sa))) { perror("error bind failed"); close(sock); exit(EXIT_FAILURE); } /* loop receiving packets */ for (;;) { printf ("recv test....\n"); recsize = recvfrom(sock, (void *)buffer, 1024, 0, (struct sockaddr *)&sa, &fromlen); if (recsize < 0) { fprintf(stderr, "%s\n", strerror(errno)); exit(EXIT_FAILURE); } printf("recsize: %zd\n ", recsize); sleep(1); printf("datagram: %.*s\n", (int)recsize, buffer); } }