0

我有一个 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回调中完成的

  1. 从缓冲区中获取字符串
  2. 做任何事..用字符串
  3. 再次调用 BeginReceive

PS:我不想使用其他端口。

4

1 回答 1

0

您必须捕获该异常(您可以查找特定的错误代码),然后关闭该套接字并摆脱它。然后从头开始创建一个新的。

于 2013-04-05T19:21:46.223 回答