我创建了一个非阻塞套接字,然后使用epoll
来管理套接字。我没有在epoll_wait
设置超时。但是我发现epoll
在5s到10s之间返回,然后我在getsockopt
上查看SO_ERROR
,连接发现超时。为什么要在这么短的时间内抽出时间?
我尝试使用工具来限制TCP包。场景是这样的:
当我的客户端发送SYN
以连接到服务器时。但服务器无法在5s到10s内发回ACK
。然后epoll_wait
返回。并查看SO_ERROR
。我得到了EIMTEDOUT
。
我无法理解为什么超时时间在5s到10s之间如此短暂。是我的客户的问题还是epoll
?
答案 0 :(得分:1)
我最近发布了一个类似的question请参阅接受的答案,该答案解释了如何通过Linux内核计算TCP连接超时值。如果您碰巧在同一台计算机上安装了客户端/服务器,则很可能具有较短的超时值。如果您希望服务器花费的时间比接受连接的时间长,您可能需要自己明确设置超时值。