winsock连接持续多久

How long does a winsock connection last?

本文关键字:连接 winsock      更新时间:2023-10-16

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

我已经找到了很多关于建立连接时超时的文档,但我正在努力了解连接建立后会持续多久。连接是否持续到任一程序关闭?我可以连接,然后等两个小时发送东西吗?

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

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

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

总之:没有通用的方法来发现连接的生存期。您完全掌握在防火墙、代理(如果适用)和服务器代表的手中。

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