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
M
Makefile
+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 }