如果套接字没有被服务器断开/关闭,如何重新连接套接字到服务器

本文关键字:服务器 套接字 重新连接 关闭 断开 如果 | 更新日期: 2023-09-27 18:07:32

我有一个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. 再次调用BeginReceive

PS:我不想使用其他端口

如果套接字没有被服务器断开/关闭,如何重新连接套接字到服务器

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