From 25cfbeae73b5b92ffeae821781f48a53658a5c97 Mon Sep 17 00:00:00 2001 From: lhiven Date: Mon, 13 Jan 2025 08:28:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96TCP=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=AB=AF=E8=87=AA=E5=8A=A8=E9=87=8D=E8=BF=9E=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Rs.Framework/TcpClientHelper.cs | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/Rs.Framework/TcpClientHelper.cs b/Rs.Framework/TcpClientHelper.cs index a9b8652..8f35d85 100644 --- a/Rs.Framework/TcpClientHelper.cs +++ b/Rs.Framework/TcpClientHelper.cs @@ -61,10 +61,13 @@ namespace Rs.Framework { m_Socket.Connect(host, port); m_IsConnected = true; + LogHelper.Debug($"ip:{m_HostName},port:{m_Port} connected"); OnConnected?.Invoke(m_Socket); } catch (Exception) { + Thread.Sleep(3000); + LogHelper.Debug($"ip:{host},port:{port} connect fail,will reconnect"); m_Socket.Close(); m_Socket.Dispose(); m_Socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); @@ -91,32 +94,31 @@ namespace Rs.Framework { DataRecived?.Invoke(serverSocket, data.Take(len).ToArray()); } - + else if(len <= 0) + { + m_IsConnected = false; + LogHelper.Debug($"ip:{m_HostName},port:{m_Port} disconnected"); + serverSocket.Shutdown(SocketShutdown.Both); + serverSocket.Close(); + serverSocket.Dispose(); + OnDisconnected?.Invoke(m_Socket); + Connect(m_HostName, m_Port);//重新尝试去连接 + return; + } } catch (Exception ex) { + m_IsConnected = false; LogHelper.Debug(ex.Message); //异常退出 if(serverSocket.Connected) { serverSocket.Shutdown(SocketShutdown.Both); } - - serverSocket.Close(); - serverSocket.Dispose(); - Connect(m_HostName,m_Port);//重新尝试去连接 - m_IsConnected = false; - OnDisconnected?.Invoke(m_Socket); - return; - } - if (len <= 0) - { - serverSocket.Shutdown(SocketShutdown.Both); serverSocket.Close(); serverSocket.Dispose(); - m_IsConnected = false; - Connect(m_HostName, m_Port);//重新尝试去连接 OnDisconnected?.Invoke(m_Socket); + Connect(m_HostName,m_Port);//重新尝试去连接 return; } }