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

问题描述 投票:0回答:1

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

提前致谢。

c tcp posix-select
1个回答
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 示例:

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

干杯。

© www.soinside.com 2019 - 2024. All rights reserved.