如果服务器未断开/关闭套接字,如何将套接字重新连接到服务器?

时间:2013-04-05 19:02:53

标签: c#

我有一个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);

这些事情在接收回调中完成

  1. 从缓冲区获取字符串
  2. 用字符串
  3. 做任何事情
  4. 再次调用BeginReceive
  5. PS:我不想使用其他端口。

1 个答案:

答案 0 :(得分:0)

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