TCP Preforked Server не работает, реализация предварительно раздвоенного (версия процесса) TCP сервера не работает должным образом
В настоящее время я работаю над заданием, которое должно одновременно подключать не менее 16 клиентов к серверу (это должен быть предварительно сформированный сервер TCP), и проблема, с которой я сталкиваюсь сейчас, заключается в том, что после предварительной ветвления функция чтения работает неправильно, вот пример кода, заранее спасибо!
char buf[BUFLEN];
void treat_request(int newfd);
void treat_request(int newfd){
bzero(buf,BUFLEN);
int n = read(newfd,buf,BUFLEN);
if(n < 0) printf("Something went wrong");
if(n > 0) printf("All OK");
if(buf[0] == REQUEST_T) printf("GOT IT");
}
int main (int argc, char ** argv){
int sockfd, newfd, len;
struct sockaddr_in serv_addr, cli_addr;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(atoi(argv[1]));
bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr));
listen(sockfd,5);
len = sizeof(cli_addr);
for(int i = 0 ; i < NB_PROC;i++){
if(fork() == 0){
while(1){
newfd = accept(sockfd, (struct sockaddr *) &cli_addr, &len);
treat_request(newfd);
close(newfd);
}
}
}
while(1) pause();
}