我目前正在处理一个分配,该分配必须与服务器同时至少连接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();
}