winsock连接有多长时间了?

时间:2012-03-08 18:59:25

标签: c++ networking timeout winsock

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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

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

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