tserver.c - unix-socket - unix socket C example
HTML git clone https://git.parazyd.org/unix-socket
DIR Log
DIR Files
DIR Refs
---
tserver.c (989B)
---
1 #include <sys/types.h>
2 #include <sys/socket.h>
3 #include <sys/un.h>
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <unistd.h>
7
8 #define NAME "socket"
9
10 int main(void)
11 {
12 int sock, msgsock, rval;
13 struct sockaddr_un server;
14 char buf[1024];
15
16 sock = socket(AF_UNIX, SOCK_STREAM, 0);
17 if (sock < 0) {
18 perror("opening stream socket");
19 exit(1);
20 }
21
22 server.sun_family = AF_UNIX;
23 strcpy(server.sun_path, NAME);
24 if (bind(sock, (struct sockaddr *)&server, sizeof(struct sockaddr_un))) {
25 perror("binding stream socket");
26 exit(1);
27 }
28
29 printf("Socket has name %s\n", server.sun_path);
30 listen(sock, 5);
31
32 for (;;) {
33 msgsock = accept(sock, 0, 0);
34 if (msgsock == -1) {
35 perror("accept");
36 } else do {
37 memset(buf, 0, sizeof(buf));
38 if ((rval = read(msgsock, buf, 1024)) < 0)
39 perror("reading stream message");
40 else if (rval == 0)
41 printf("Ending connection\n");
42 else
43 printf("-->%s\n", buf);
44 } while (rval > 0);
45 close(msgsock);
46 }
47
48 close(sock);
49 unlink(NAME);
50