如何使 TCP 套接字保持活动状态并检测断开连接

本文关键字:检测 断开 连接 活动状态 何使 TCP 套接字 | 更新日期: 2023-09-27 18:34:12

在我的C#程序中,我使用TCP套接字进行通信。套接字怎么知道,当另一端没有正确调用关机/关闭或其他什么时,没有更多的连接。例如,当互联网连接丢失时。我对TCP的了解是它发送保持活动状态的数据包。对此的标准值是什么,它们的发送频率如何,我可以在哪里设置间隔以及如何设置断开连接超时(在未收到任何消息时将连接视为断开连接之前等待的时间)?

如何使 TCP 套接字保持活动状态并检测断开连接

如果套接字不发送或接收任何数据,则根据定义,套接字处于活动状态并打开。 TCP可以永远存在,只要每一端都知道它的当前状态,它仍然会工作。

您可能会遇到的问题是,中间设备(如状态防火墙)为与终端设备无关的 TCP 连接维护超时,并且终端设备没有可见性。 如果在两个三天甚至四天之后,一个开发人员想要在TCP通道上发送数据,如果中间设备无法发送数据,那么套接字才会"断开连接"。

关于您关于 tcp-keep-alives 的问题 - 这取决于操作系统。

这里有一篇关于Windows方式的好文章:https://blogs.technet.microsoft.com/nettracer/2010/06/03/things-that-you-may-want-to-know-about-tcp-keepalives/