【问题标题】:Winsock TCP Connect with Infinite TimeoutWinsock TCP 连接无限超时
【发布时间】:2011-10-04 21:16:07
【问题描述】:

我希望我的 Winsock TCP connect() 调用以无限超时阻塞。

问题: 1. 我该怎么做?

  1. 从功能的角度来看,我上述的愿望正是我所需要的。从技术角度来看,这是否是个坏主意?

谢谢你, 戴夫

【问题讨论】:

    标签: tcp winsock


    【解决方案1】:

    如果您想永远等待,只需在 connect 超时时重试即可。

    超时对于 TCP 的工作方式非常重要。您可以调整机器的设置(例如:Which is the default TCP connect timeout in Windows?),但这不是一个好主意(影响所有 TCP 连接)。

    【讨论】:

      【解决方案2】:

      回答你问题的第二部分:

      从功能的角度来看,我上面所说的愿望正是 我需要。从技术角度来看有什么理由吗? 一个坏主意?

      您只能通过写入来检测断开的 TCP 连接与未向您发送任何内容的连接之间的区别(请参阅this answer)。什么都不读可能意味着连接断开或没有任何东西发送给您。超时可用于检测(或强制)此类断开连接,从而释放资源。 (您也可以使用 TCP Keep-alive 来检测断开连接,但效果与超时非常相似。)

      如果您计划使用的协议从您想要禁用超时的一侧定期写入,这对您来说可能无关紧要,否则,您最终可能会遇到您期待某些事情发生的情况永远从另一端(因为它可能突然断开连接)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-16
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-17
        • 2011-11-06
        相关资源
        最近更新 更多