我注意到有时 select 返回时在 errno 上设置了连接超时,但我不知道它为什么会这样做,它怎么知道的?你打算如何处理这个问题? (我猜这意味着其中一个连接超时,也许在适当的时间没有收到 ACK)。我想唯一合法的情况是如果服务器套接字在那里并且您之前运行过非阻塞连接?在这种情况下,再次在此套接字上运行连接将返回给您它是否已连接,这就是处理该问题的方法....但是有更好的方法吗?
提前致谢。
最佳答案
正如上面的评论者所说,这可能是 select()
在非阻塞 connect()
上的结果。除非这是一般的超时,在这种情况下,传入的已接受的 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 示例:
How can I get non-blocking socket connect()'s?
干杯。
关于c - 连接超时在 select() 调用的上下文中意味着什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4356996/