commit f45ea23

uint  ·  2026-01-02 18:37:50 +0000 UTC
parent 95ca823
create minimal server

just sends back a simple hello

.
2 files changed,  +53, -2
+1, -1
1@@ -1,7 +1,7 @@
2 CC=cc
3 
4 CPPFLAGS=
5-CFLAGS= -Iserver/include
6+CFLAGS= -std=c99 -Wall -Wextra -O2 -Iserver/include
7 
8 DAE=paradosd
9 
+52, -1
 1@@ -1,8 +1,59 @@
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4+#include <string.h>
 5+#include <sys/socket.h>
 6+#include <unistd.h>
 7+
 8+#include <arpa/inet.h>
 9+#include <netinet/in.h>
10+
11+#define PORT   6767
12+
13+void die(const char* s, int e);
14+
15+void die(const char* s, int e)
16+{
17+	perror(s);
18+	exit(e);
19+}
20 
21 int main(void)
22 {
23-	printf("parados daemon\n");
24+	int ret = 1;
25+	int s = socket(AF_INET, SOCK_STREAM, 0);
26+	if (s < 0)
27+		die("socket", EXIT_FAILURE);
28+
29+	int yes = 1;
30+	ret = setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes));
31+	if (ret < 0)
32+		die("setsockopt", EXIT_FAILURE);
33+
34+	struct sockaddr_in a;
35+	memset(&a, 0, sizeof(a));
36+	a.sin_family = AF_INET;
37+	a.sin_port = htons(PORT);
38+	a.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
39+
40+	ret = bind(s, (struct sockaddr*)&a, sizeof(a));
41+	if (ret < 0)
42+		die("bind", EXIT_FAILURE);
43+
44+	ret = listen(s, 64);
45+	if (ret < 0)
46+		die("listen", EXIT_FAILURE);
47+
48+	printf("listening on 127.0.0.1:%d\n", PORT);
49+
50+	for (;;) {
51+		int c = accept(s, NULL, NULL);
52+		if (c < 0)
53+			continue;
54+
55+		(void)write(c, "hello\n", 6);
56+		shutdown(c, SHUT_WR);
57+		close(c);
58+	}
59+
60 	return EXIT_SUCCESS;
61 }