annotate seobeo/main.c @ 0:5695ef413be0

Initialized mono repo with bazels with few examples.
author June Park <parkjune1995@gmail.com>
date Tue, 23 Sep 2025 10:05:25 -0700
parents
children adcfad6e86fb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
1 /*
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
2 ** server.c -- a stream socket server demo
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
3 */
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
4
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
5 #include <stdio.h>
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
6 #include <stdlib.h>
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
7 #include <unistd.h>
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
8 #include <errno.h>
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
9 #include <string.h>
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
10 #include <sys/types.h>
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
11 #include <sys/socket.h>
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
12 #include <netinet/in.h>
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
13 #include <netdb.h>
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
14 #include <arpa/inet.h>
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
15 #include <sys/wait.h>
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
16 #include <signal.h>
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
17
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
18 #define PORT "6969"
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
19
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
20 #define BACKLOG 10 // how many pending connections queue will hold
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
21
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
22 void SigchildHandler(int s)
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
23 {
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
24 (void)s; // quiet unused variable warning
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
25
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
26 // waitpid() might overwrite errno, so we save and restore it:
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
27 int saved_errno = errno;
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
28
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
29 while(waitpid(-1, NULL, WNOHANG) > 0);
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
30
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
31 errno = saved_errno;
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
32 }
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
33
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
34
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
35 void *GetInternetaddr(struct sockaddr *sa)
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
36 {
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
37 if (sa->sa_family == AF_INET)
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
38 {
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
39 return &(((struct sockaddr_in*)sa)->sin_addr);
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
40 }
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
41
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
42 return &(((struct sockaddr_in6*)sa)->sin6_addr);
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
43 }
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
44
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
45 int main(void)
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
46 {
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
47 int sock_fd, client_fd;
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
48 struct addrinfo hints, *server_infos, *free_server_info;
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
49 int yes = 1; // boolean
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
50
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
51 struct sockaddr_storage client_addr;
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
52 socklen_t sin_size;
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
53
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
54 char client_inet_addr[INET6_ADDRSTRLEN];
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
55
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
56 struct sigaction sa;
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
57
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
58 memset(&hints, 0, sizeof(hints));
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
59 hints.ai_family = AF_INET;
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
60 hints.ai_socktype = SOCK_STREAM;
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
61 hints.ai_flags = AI_PASSIVE;
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
62
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
63 if (getaddrinfo(NULL, PORT, &hints, &server_infos) == 1)
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
64 {
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
65 perror("getaddrinfo");
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
66 return 1;
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
67 }
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
68
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
69 for (free_server_info = server_infos; free_server_info != NULL; free_server_info = free_server_info->ai_next)
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
70 {
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
71 if ((sock_fd = socket(free_server_info->ai_family, free_server_info->ai_socktype, free_server_info->ai_protocol)) == -1)
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
72 {
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
73 perror("socket");
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
74 continue;
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
75 }
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
76
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
77 if (setsockopt(sock_fd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)) == -1)
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
78 {
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
79 perror("setsockopt");
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
80 continue;
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
81 }
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
82
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
83 if (bind(sock_fd, free_server_info->ai_addr, free_server_info->ai_addrlen) == -1)
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
84 {
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
85 close(sock_fd);
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
86 perror("setsockopt");
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
87 continue;
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
88 }
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
89
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
90 // binded to a open server infos;
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
91 break;
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
92 }
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
93
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
94 freeaddrinfo(server_infos);
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
95
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
96 if (free_server_info == NULL)
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
97 {
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
98 perror("No free server");
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
99 return 1;
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
100 }
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
101
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
102 if (listen(sock_fd, BACKLOG) != 0)
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
103 {
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
104 perror("listen");
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
105 return 1;
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
106 }
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
107
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
108 sa.sa_handler = SigchildHandler; // reap all dead processes
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
109 sigemptyset(&sa.sa_mask);
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
110 sa.sa_flags = SA_RESTART;
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
111 if (sigaction(SIGCHLD, &sa, NULL) == -1) {
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
112 perror("sigaction");
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
113 exit(1);
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
114 }
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
115
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
116 printf("server: waiting for connections...\n");
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
117
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
118 char *response =
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
119 "HTTP/1.1 OK %s\r\n"
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
120 "Content-Type: text/txt\r\n"
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
121 "Content-Length: 13\r\n"
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
122 "Connection: close\r\n"
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
123 "\r\n"
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
124 "Hello, world!";
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
125
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
126 while (1)
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
127 {
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
128 sin_size = sizeof(client_addr);
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
129 client_fd = accept(sock_fd, (struct sockaddr *)&client_addr, &sin_size);
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
130
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
131 if (client_fd == -1)
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
132 {
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
133 perror("accept");
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
134 continue;
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
135 }
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
136
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
137 inet_ntop(
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
138 client_addr.ss_family,
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
139 GetInternetaddr((struct sockaddr *)&client_addr),
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
140 client_inet_addr, sizeof client_inet_addr);
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
141
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
142 printf("server: got connection from %s\n", client_inet_addr);
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
143
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
144 // Create a child process
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
145 if (!fork())
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
146 {
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
147 close(sock_fd);
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
148 if (send(client_fd, response, strlen(response), 0) == -1)
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
149 {
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
150 perror("send");
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
151 continue;
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
152 }
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
153 close(client_fd);
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
154 exit(0);
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
155 }
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
156
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
157 close(client_fd);
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
158 }
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
159
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
160 return 0;
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
161 }
5695ef413be0 Initialized mono repo with bazels with few examples.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
162