第二次调用Accept()为同一客户端请求提供新套接字

时间:2011-09-26 16:21:24

标签: c sockets

我喜欢编写一个带有两个线程的服务器程序,一个线程用于接受请求并排队。第二个,工作线程,用于处理它们(我还没写过)。这是伪代码。

    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()为同一个请求提供另一个套接字而不会阻塞。我尝试从不同的浏览器发送第二个请求,我得到了分段错误。有人可以告诉我如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

浏览器是否可能发出多个请求,特别是对于/favicon.ico以及HTML?

我建议您使用Wireshark查看网络级别的内容。

答案 1 :(得分:0)

您的客户最有可能发送多个资源的多个请求?