我有一个 TCP 异步项目,如果连接已关闭,则将客户端重新连接到服务器时会出现问题。(服务器未关闭)。
当服务器关闭时,客户端收到以下错误:
An existing connection was forcibly closed by the remote host at EndReceive(IAyncResult ar) at ReceiveCallback(IAsyncResult ar)
PS:客户端只能接收来自服务器的流。
话虽如此,我知道我需要以某种方式重新连接到服务器。我试图做某事,但它没有奏效,因为客户端没有响应并退出。
我所做的是,在包含以下步骤的接收回调的 catch 块中,我将 ClientSocket 设置为 Disconnected(true) 并在 while 循环 (!ClientSocket.Connected) 中,我正在回忆启动异步的主要方法再次操作,最后一行代码是 Thread.Sleep(n);
这些事情都是在receive回调中完成的
- 从缓冲区中获取字符串
- 做任何事..用字符串
- 再次调用 BeginReceive
PS:我不想使用其他端口。