优化TCP客户端自动重连机制

master
lhiven 5 months ago
parent 0429d40754
commit 25cfbeae73

@ -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;
}
}

Loading…
Cancel
Save