据我所知,积压决定了连接队列的大小。在那个时候,任何超过这个大小的额外请求都将被丢弃(这个说法正确吗?)。
现在我有一个非常简单的程序server.c
socket()
bind()
listen(..., 5)
while(1)
{
accept()
read()
write()
sleep(3)
close()
}
现在,我一次启动8个客户端连接到这个服务器。令人惊讶的是,服务器服务了所有8个客户端,但实际上它只应该排队5个客户端,剩余的3个客户端请求应该被拒绝。另一个有趣的点是,即使我将此backlog值设置为0,结果仍然相同。然后我尝试注释listen()调用,这样所有8个客户端连接都被拒绝。
请问有人可以对此提供任何意见吗?
read
、write
和close
放在并发环境中。在你的代码中,当下一个连接被accept
时,似乎前一个连接已经关闭了。将代码放入线程中,并确保每个连接持续足够长的时间,以确保同时有8个客户端请求你的服务器的情况真正发生。 - Summer_More_More_Tea