2012-03-08 117 views
3

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

建立连接时,我发现了很多有关超时的文档,但我试图找出建立连接后持续多久。直到任一程序关闭,连接是否持续?我可以连接,然后等待两个小时发送一些东西?

+0

只要网络保持运转,当然。 – 2012-03-08 19:02:25

+0

直到下一个'补丁星期二':)如果没有“关键安全更新”,连接可能会永远保持打开状态,就像@BrianRoach所说。 – 2012-03-09 00:22:22

回答

3

没有明确的连接生存期限制(至少在TCP中)。连接持续到下列之一:

  • 两个端点(应用)关闭(实际上该连接可以保持在半双工模式)
  • 中间体实体决定终止连接(如防火墙,NAT或等)

在“现实世界”的互联网连接通常会在一段时间后强行关闭,特别是如果没有数据发送。除此之外,根据协议,有些服务器拒绝将连接保持打开状态(例如http服务器)。

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

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