我喜欢编写一个带有两个线程的服务器程序,一个线程用于接受请求并排队。第二个,工作线程,用于处理它们(我还没写过)。这是伪代码。
while (1) {
newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);
read_from_newsockfd()
put_in_queue
// I am not closing the newsockfd here. If I close it here how
to I communicate with the client from my second worker thread.
}
现在当我从浏览器发送请求时,第二次调用accept()为同一个请求提供另一个套接字而不会阻塞。我尝试从不同的浏览器发送第二个请求,我得到了分段错误。有人可以告诉我如何解决这个问题吗?
答案 0 :(得分:1)
浏览器是否可能发出多个请求,特别是对于/favicon.ico以及HTML?
我建议您使用Wireshark查看网络级别的内容。
答案 1 :(得分:0)
您的客户最有可能发送多个资源的多个请求?