【问题标题】:How long does a winsock connection last?winsock 连接持续多长时间?
【发布时间】:2012-03-26 06:24:50
【问题描述】:

我有一个使用 Winsock 连接到服务器的 C++ 程序,用户需要在很长一段时间内定期向该服务器发送数据(可能需要数周而不需要重新连接)。

我找到了大量关于建立连接时超时的文档,但我试图找出连接建立后的持续时间。连接是否会持续到任一程序关闭?我可以连接然后等待两个小时发送东西吗?

【问题讨论】:

  • 只要网络保持正常,就可以。
  • 直到下一个“星期二补丁”:) 如果没有“关键安全更新”,则连接可能会永远保持打开状态,就像 @BrianRoach 所说的那样。

标签: c++ networking timeout winsock


【解决方案1】:

没有明确的连接生命周期限制(至少在 TCP 中)。连接将持续到以下情况之一:

  • 任一端点(应用程序)都关闭(实际上连接可能保持在半双工模式)
  • 中间实体决定终止连接(例如防火墙、NAT 等)

在“现实世界”中,互联网连接通常会在一段时间后被强制关闭,尤其是在没有数据发送的情况下。除此之外,根据协议,一些服务器拒绝无限期保持连接打开(例如http服务器)。

总结:没有通用的方法来发现连接的生命周期。您完全掌握在防火墙、代理(如果适用)和服务器的控制之下。

定期发送一些数据(例如保持活动消息)通常会有所帮助。它还有助于检测连接是否已被静默终止。

【讨论】:

    猜你喜欢
    • 2021-02-12
    • 1970-01-01
    • 2015-08-09
    • 2023-03-16
    • 2010-10-22
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    相关资源
    最近更新 更多