【发布时间】:2012-01-28 00:18:15
【问题描述】:
我创建了一个非阻塞套接字,然后使用epoll 来管理套接字。我没有在epoll_wait 上设置超时。但是我发现epoll在5s到10s内返回,然后我在SO_ERROR上检查getsockopt,连接发现超时。为什么这么短的时间就超时了?
我尝试使用工具来限制 TCP 包。场景是这样的:
当我的客户端发送SYN 以连接到服务器时。但是服务器无法在 5s 到 10s 内发回ACK。然后epoll_wait 返回。并与SO_ERROR 联系。我收到了EIMTEDOUT。
我只是不明白为什么超时时间在 5s 到 10s 之间如此之短。是我客户的问题还是epoll?
【问题讨论】:
-
+1 - 5-10 秒对于连接超时来说确实非常短。例如,如果链接包含拨号调制解调器,则连接总是会因超时而失败。我也想知道为什么会这样。
-
我不知道为什么。我只是使用libev。上面的描述正是 libev 在 C++ 中所做的。我只是发现 libev 在这么短的时间内返回 ETIMEDOUT。
标签: linux tcp network-programming tcpclient epoll