我有一个客户端应用程序的多个实例,通过TcpClient通过Internet连接到主应用程序. (两者都由我编码).所以连接如下:
TcpClient.Connect(ip,port)
我现在希望这可以处理各种类型的断开连接事件:
>主应用程序(服务器)或客户端应用程序计算机失去Internet连接.
>在恢复连接时,通信似乎丢失了,但是当我尝试重新连接时,我收到消息:
“已在连接的套接字上发出连接请求”
>所以我需要关闭并重新启动客户端应用程序.
>主应用程序(服务器)已关闭,然后重新启动.
>重新启动主应用程序,然后尝试重新连接客户端应用程序,导致与上面相同的错误.
那么,我需要做什么?每当发生此类中断时,是否需要在客户端应用程序中实例化新的TcpClient?我没有尝试过,所以不知道这是不是一个糟糕的解决方案?
do I need to instantiate a New TcpClient in the Client Apps, whenever such interruption occur?
是.如果TcpClient表示的连接断开,则无法使用该对象进行进一步通信,也无法再次连接.创建一个新的TcpClient对象.
你的问题可能是NAT网关超时你的TCP连接,所以你的服务器< - >客户端之间没有任何东西可以通过,如果从连接中读取了你的所有客户端,它将不会发现这种情况,它认为连接仍然是开放的.