Tcp Listener在大约50个小时后死亡

时间:2013-05-15 20:54:14

标签: c#-4.0

我在C#中创建了一个tcp监听器。我已经将超时设置为0,无限时间。如果在听众和客户端之间的周末没有大约50个小时的活动,但是没有断开连接。它死了

请告知我如何解决这个问题。

提前致谢。

1 个答案:

答案 0 :(得分:0)

路由器通常会在预设的时间后杀死空闲的TCP连接。如果您的连接是通过互联网进行的,那么您无法控制它。为了防止问题以编程方式检测您的空闲连接并发送非常少量的信息,即每5分钟左右byte[] { 0 };

这不会增加任何开销,就像连接处于活动状态一样,您不会发送“keep alive packet”。

另一种选择是使用`Socket.SetSocketOption'在底层套接字上设置'KeepAlive'选项。这应该执行相同的功能,但我总是发现自定义解决方案更可靠。