From 0730e77eb4aa9841e90a17f190b9ae7d80565054 Mon Sep 17 00:00:00 2001 From: Toni Uhlig Date: Mon, 16 Jun 2025 17:09:43 +0200 Subject: Initial commit Signed-off-by: Toni Uhlig --- user_server.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 user_server.c (limited to 'user_server.c') diff --git a/user_server.c b/user_server.c new file mode 100644 index 0000000..de2054f --- /dev/null +++ b/user_server.c @@ -0,0 +1,52 @@ +#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); +} -- cgit v1.2.3