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