303 write(2,
"Wrong number of arguments\n", 26);
307 g_listen_fd = socket(AF_INET, SOCK_STREAM, 0);
311 struct sockaddr_in addr;
312 bzero(&addr,
sizeof(addr));
313 addr.sin_family = AF_INET;
314 addr.sin_addr.s_addr = htonl(0x7f000001);
315 addr.sin_port = htons(atoi(av[1]));
316 if (bind(g_listen_fd, (
const struct sockaddr *)&addr,
sizeof(addr)) < 0)
318 if (listen(g_listen_fd, 128) < 0)
321 FD_ZERO(&g_activefds);
322 FD_SET(g_listen_fd, &g_activefds);
323 g_maxfd = g_listen_fd;
325 bzero(g_ids,
sizeof(g_ids));
326 bzero(g_msgs,
sizeof(g_msgs));
330 g_readfds = g_writefds = g_activefds;
331 if (select(g_maxfd + 1, &g_readfds, &g_writefds, NULL, NULL) < 0)
334 for (
int fd = 0; fd <= g_maxfd; fd++)
336 if (!FD_ISSET(fd, &g_readfds))
338 if (fd == g_listen_fd)
453 int len = strlen(g_buf_write);
454 for (
int fd = 0; fd <= g_maxfd; fd++)
456 if (fd == g_listen_fd || fd == except)
458 if (FD_ISSET(fd, &g_writefds))
459 send(fd, g_buf_write, len, 0);