如何在网络拔出然后插入后立即重新连接 TcpClient

本文关键字:重新连接 TcpClient 插入 然后 网络 | 更新日期: 2023-09-27 18:25:06

我有一个TcpClient,我想在网络断开连接后立即自动重新连接,然后重新连接,但我不知道如何实现它。

这是我的功能..

  private void Conn()
    {
            try
            {
                client = new TcpClient();
                client.Connect(new IPEndPoint(IPAddress.Parse(ip), intport));
                //Say thread to sleep for 1 secs.
                Thread.Sleep(1000);
            }
            catch (Exception ex)
            {
                // Log the error here.
                client.Close();
            }
            try
            {
                using (NetworkStream stream = client.GetStream())
                {
                    byte[] notify = Encoding.ASCII.GetBytes("Hello");
                    stream.Write(notify, 0, notify.Length);
                 }
                 byte[] data = new byte[1024];
                    while (true)
                    {
                        {
                            int numBytesRead = stream.Read(data, 0, data.Length);
                            if (numBytesRead > 0)
                            {
                                data= Encoding.ASCII.GetString(data, 0, numBytesRead);
                            }
                         }
                     }
               }
             catch{Exception ex}

此外,从Tcpip机器获取连续数据的可靠性while (true)。直到我测试之前,此代码会在一段时间后自动退出响应或获取数据。请帮助我获得不间断的数据。谢谢。。

如何在网络拔出然后插入后立即重新连接 TcpClient

你在写完东西后立即处理NetworkStream。这将关闭套接字。别这样。相反,将TcpClient放在using语句中。

您读取数据的方式完全正确。当Read返回0时,循环将退出,这表示远程端正常关闭连接。如果这是意外的,则问题出在远程端。

仅捕获SocketException并检查状态代码属性以找出确切的错误。

无法可靠地检测网络错误。您必须等待异常才能注意到连接失败。之后,您需要定期尝试再次建立连接,以了解网络何时再次可用。

我相信 Windows 提供了一些网络接口级别的事件来检测未插入的电缆,但这些事件是不可靠的。