#include #include #include #include #include #include #define BUFLEN 512 #define PORT 1234 int main(void) { int ret; int sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if (sock == -1) { perror("socket"); return -1; } struct sockaddr_in sockaddr = {0}; sockaddr.sin_family = AF_INET; sockaddr.sin_port = htons(PORT); sockaddr.sin_addr.s_addr = htonl(INADDR_ANY); ret = bind(sock, (struct sockaddr *)&sockaddr, (sizeof (struct sockaddr_in))); if (ret == -1) { perror("bind"); return -1; } char buf[BUFLEN]; while (1) { printf("Wait for datagram\n"); struct sockaddr_in src_addr = {0}; socklen_t addrlen = (sizeof (struct sockaddr_in)); ssize_t recv_len = recvfrom(sock, buf, BUFLEN, 0, (struct sockaddr *)&src_addr, &addrlen); if (recv_len == -1) { perror("recvfrom"); return -1; } buf[recv_len] = 0; printf("Received packet from %s:%d\n", inet_ntoa(src_addr.sin_addr), ntohs(src_addr.sin_port)); printf("Data: %s\n", buf); /* //now reply the client with the same data if (sendto(s, buf, recv_len, 0, (struct sockaddr*) &si_other, slen) == -1) { die("sendto()"); } */ } close(sock); return 0; }