C# 4.0 Tcp侦听器在大约50小时后死亡

C# 4.0 Tcp侦听器在大约50小时后死亡,c#-4.0,C# 4.0,我已经在C#中创建了一个tcp侦听器。我已将超时设置为0,时间不限。如果监听器和客户端之间大约有50个小时没有活动,就像周末一样,但不要断开连接。它死了 请告知我如何解决此问题 提前感谢。路由器通常会在预设的时间后终止空闲的TCP连接。如果您的连接是通过internet进行的,则无法控制此连接。以编程方式检测空闲连接并发送少量信息,即byte[]{0},以防止出现问题大约每5分钟一次 这不会增加开销,因为如果连接处于活动状态,则不发送“” 另一个选项是使用在底层套接字上设置“KeepAlive”

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

请告知我如何解决此问题


提前感谢。

路由器通常会在预设的时间后终止空闲的TCP连接。如果您的连接是通过internet进行的,则无法控制此连接。以编程方式检测空闲连接并发送少量信息,即
byte[]{0},以防止出现问题大约每5分钟一次

这不会增加开销,因为如果连接处于活动状态,则不发送“”


另一个选项是使用在底层套接字上设置“KeepAlive”选项。这应该执行相同的功能,但我始终发现自定义解决方案更可靠。

什么样的应用程序承载此侦听器?操作系统中是否有东西可能会终止进程?不,进程仍在运行,我不确定是.NET问题还是其他问题。请澄清程序是否停止侦听连接,或者是否终止了现有但空闲的连接。另外,您能否在两个系统之间使用直接有线连接进行测试,以排除服务提供商强加的任何内容或网络不可靠性?确定特定的超时可能会有帮助,即它是一致的还是随机的?您可能需要每隔一段时间实现keep alive通信量。由于某些内部线程未终止,进程仍在运行。您如何从侦听器中发送这样的数据包?@500 InternalServerError-我建议使用底层TCPListener套接字或使用自定义解决方案,在连接完成后手动发送数据包已建立(通过TcpListener.AcceptTcpClient)。根据我对OP的理解,当发生这种情况时,没有连接客户端。@500 InternalServerError-我很高兴错了,但我读到“监听器和客户端之间大约有50个小时,就像周末一样”,这意味着已经建立了连接。