summaryrefslogtreecommitdiff
path: root/server.c
diff options
context:
space:
mode:
Diffstat (limited to 'server.c')
-rw-r--r--server.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/server.c b/server.c
new file mode 100644
index 0000000..e35a9b5
--- /dev/null
+++ b/server.c
@@ -0,0 +1,36 @@
+// Initially based on https://stackoverflow.com/a/35570418
+
+#include <netinet/in.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <unistd.h>
+
+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);
+}