c++ - winsock 连接持续多长时间?

标签 c++ networking timeout winsock

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

我发现了很多关于建立连接时超时的文档,但我想知道连接建立后还能持续多长时间。连接是否持续到任一程序关闭?我可以连接然后等待两个小时发送一些东西吗?

最佳答案

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

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

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

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

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

关于c++ - winsock 连接持续多长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9623271/

相关文章:

timeout - 是否可以编写脚本来避免VPN超时

c++ - Linux Manjaro 上的 Visual Studio 代码 C++ : IncludePath issue

c++ - 使用大括号和 : symbols 进行对象实例化

c++ - 从套接字读取数据

c - 当只发送一条消息时从接收中获取两条消息

PHP 任务终止但没有出现错误情况

bash - 使用 sleep 和 wait -n 在 bash 中实现简单的超时,竞争条件与否?

c++ - 无法找到数字文字运算符 ‘operator""

c++ - Qt 5 中的最新 QT/QML 映射

networking - 阿联酋阻止了 WEBRTC 对等连接?