Connection Timeout在select()调用的上下文中意味着什么

时间:2010-12-05 02:12:06

标签: c select tcp

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

提前致谢。

1 个答案:

答案 0 :(得分:0)

正如上面的评论者所说,这可能是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?

干杯。