From 47c52a005e1722e35ad5c3d762c1fb1cadf2dcd9 Mon Sep 17 00:00:00 2001 From: Enigma228322 Date: Fri, 2 Oct 2020 20:48:57 +0500 Subject: [PATCH] :rainbow: requests multi process Signed-off-by: Enigma228322 --- src/server.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/server.c b/src/server.c index 6288846..1d37d33 100644 --- a/src/server.c +++ b/src/server.c @@ -81,6 +81,48 @@ void server_listen(int server_fd,struct sockaddr *address){ } } +void server_listen_multi(int server_fd,struct sockaddr *address){ + int addrlen = sizeof(address); + int new_socket; + long valread; + char *hello = "Hello from server"; + char buffer[30000] = {0}; + Request* reqs[MAX_REQUESTS]; + while(1) + { + new_socket = accept(server_fd, NULL, NULL); + if(new_socket < 0) + { + perror("accept error"); + exit(3); + } + + switch(fork()) + { + case -1: + perror("fork error"); + break; + + case 0: + close(server_fd); + while(1) + { + valread = recv(new_socket, buffer, 1024, 0); + if(valread <= 0) break; + send(new_socket, buffer, valread, 0); + } + + close(new_socket); + _exit(0); + + default: + close(new_socket); + } + } + + close(server_fd); +} + #ifndef TESTING int main(int argc, char const *argv[])