// Initially based on https://stackoverflow.com/a/35570418 #include #include #include #include #include int main(void) { int const fd = socket(AF_INET, SOCK_DGRAM, 0); if (fd < 0) { perror("socket failed"); return 1; } struct sockaddr_in const serveraddr = { .sin_family = AF_INET, .sin_port = htons(50037), .sin_addr.s_addr = htonl(INADDR_ANY), }; if (bind(fd, (struct sockaddr *)&serveraddr, sizeof(serveraddr)) < 0) { perror("bind failed"); return 1; } for (;;) { char buffer[200]; int const length = recvfrom(fd, buffer, sizeof(buffer) - 1, 0, NULL, 0); if (length < 0) { perror("recvfrom failed"); break; } buffer[length] = '\0'; printf("%d bytes: '%s'\n", length, buffer); } close(fd); }