我在C#中创建了一个tcp监听器。我已经将超时设置为0,无限时间。如果在听众和客户端之间的周末没有大约50个小时的活动,但是没有断开连接。它死了
请告知我如何解决这个问题。
提前致谢。
答案 0 :(得分:0)
路由器通常会在预设的时间后杀死空闲的TCP连接。如果您的连接是通过互联网进行的,那么您无法控制它。为了防止问题以编程方式检测您的空闲连接并发送非常少量的信息,即每5分钟左右byte[] { 0 };
。
这不会增加任何开销,就像连接处于活动状态一样,您不会发送“keep alive packet”。
另一种选择是使用`Socket.SetSocketOption'在底层套接字上设置'KeepAlive'选项。这应该执行相同的功能,但我总是发现自定义解决方案更可靠。