【问题标题】:What does a Connection Timeout mean in the context of a select() call在 select() 调用的上下文中,连接超时意味着什么
【发布时间】:2010-12-05 02:12:06
【问题描述】:

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

提前致谢。

【问题讨论】:

  • 是的,这应该只发生在非阻塞connect 上,但我忘记了使用非阻塞connectselect 的正确方法,所以我把它写成评论而不是答案。

标签: c select tcp


【解决方案1】:

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

干杯。

【讨论】:

    猜你喜欢
    • 2015-01-04
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 2017-12-23
    • 1970-01-01
    • 2015-04-27
    • 2018-07-05
    相关资源
    最近更新 更多