中断后重新连接TCPClient

bre*_*dog 3 .net c# sockets tcp tcpclient

我有一个客户端应用程序的多个实例,通过TcpClient通过Internet连接到主应用程序.(两者都由我编码).所以连接如下:

TcpClient.Connect(ip,port)

我现在希望这可以处理各种类型的断开连接事件:

  1. 主应用程序(服务器)或客户端应用程序计算机失去Internet连接.

    • 在恢复连接时,通信似乎丢失了,但是当我尝试重新连接时,我收到消息: "已在已连接的套接字上发出连接请求"
    • 所以我需要关闭并重新启动客户端应用程序.
  2. 主应用程序(服务器)已关闭,然后重新启动.

    • 重新启动主应用程序,然后尝试重新连接客户端应用程序,会导致与上面相同的错误.

那么,我需要做什么?每当发生此类中断时,是否需要在客户端应用程序中实例化新的TcpClient?我没有尝试过,所以不知道这是不是一个糟糕的解决方案?

nos*_*nos 6

在发生此类中断时,是否需要在客户端应用中实例化新的TcpClient?

是.如果TcpClient表示的连接断开,则无法使用该对象进行进一步通信,也无法再次连接.创建一个新的TcpClient对象.

您的问题可能是NAT网关超时您的TCP连接,因此您的服务器< - >客户端之间没有任何东西可以通过,如果您的所有客户端都从连接读取,它将不会发现这种情况,并且它认为连接仍然是开放的.