关于 c:在 select() 调用的上下文中,连接超时意味着什么

What does a Connection Timeout mean in the context of a select() call

我注意到有时选择返回连接超时设置为 errno,但我不知道它为什么会这样做,它怎么知道?你打算如何处理这个问题? (我猜这意味着其中一个连接超时,也许在适当的时间没有收到 ACK)。我想唯一合法的情况是如果服务器套接字在那里并且您之前运行了非阻塞连接?在这种情况下,再次在此套接字上运行连接将返回给您,无论它是否已连接,这将是处理该问题的方法....但是有更好的方法吗?

提前致谢。


正如上面的评论者所说,这可能是非阻塞 connect() 上的 select() 的结果。除非这通常是超时,在这种情况下,有时也会发生传入接受的 TCP 套接字。无论哪种方式,以下是两个非常有用的指南,可帮助您刷新对 select() 的使用的记忆:

http://www.lowtek.com/sockets/select.html

http://beej.us/guide/bgnet/output/html/multipage/advanced.html#select

http://beej.us/guide/bgnet/output/html/multipage/advanced.html#blocking

另请参阅此问题以获取 Python 示例:

如何获得非阻塞套接字 connect()?

干杯。