#include #include #include #include #include #include #include #include "common.h" static const unsigned char payload_response[] = {PAYLOAD_RESPONSE}; int main() { unsigned char buffer[BUFSIZ]; int listenfd; socklen_t len; struct sockaddr_in servaddr = {}; struct sockaddr_in cliaddr; listenfd = socket(AF_INET, SOCK_DGRAM, 0); servaddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); servaddr.sin_port = htons(UDP_PORT); servaddr.sin_family = AF_INET; if (bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) != 0) { perror("udp bind"); return 1; } size_t i; ssize_t n; for (i = 0; i < MAX_UDP_PACKETS; ++i) { len = sizeof(cliaddr); n = recvfrom(listenfd, buffer, sizeof(buffer), 0, (struct sockaddr *)&cliaddr, &len); if (n < 0) { perror("udp recvfrom"); break; } n = sendto(listenfd, payload_response, sizeof(payload_response), 0, (struct sockaddr *)&cliaddr, sizeof(cliaddr)); if (n < 0) { perror("udp sendto"); break; } } close(listenfd); return !(i == MAX_UDP_PACKETS); }