#include "header.h" int main(int argc, char **argv) { int socketfd, acceptfd; struct sockaddr_in server, client; ssize_t bytesread; char receive_buf[LINESIZ], *str_quit = "QUIT"; memset((char *)&server, 0, sizeof(struct sockaddr_in)); server.sin_family = AF_INET; server.sin_port = htons(9191); server.sin_addr.s_addr = INADDR_ANY; socketfd = socket_ex(AF_INET, SOCK_STREAM, IPPROTO_TCP); bind_ex(socketfd, (struct sockaddr *)&server, sizeof(server)); listen_ex(socketfd, -1); while(TRUE) { socklen_t clilen = sizeof(client); /* value-result argument */ acceptfd = accept_ex(socketfd, (struct sockaddr *)&client, &clilen); /* read client input and write back to client */ while (TRUE) { bytesread = read(acceptfd, receive_buf, LINESIZ); if (strstr(receive_buf, str_quit) != NULL) { close(acceptfd); close(socketfd); exit(0); } if (bytesread < 0 && !(errno == EINTR)) err_fatal("ERROR: could not read input"); write_ex(acceptfd, receive_buf, bytesread); } close(acceptfd); } close(socketfd); }