Kai*_*Kai 6 c# reconnect tcpclient
在断开连接时(例如服务器本身)使Tcpclient自动重新连接到服务器的最佳方法是什么?
我目前使用的代码是:
public void ClientWork()
{
TcpClient client = new TcpClient();
try
{
try
{
client.Connect(ip, port);
}
catch(Exception ex)
{
logger.ErrorFormat("client.Connect: {0}", ex.Message);
return false;
}
NetworkStream ns = client.GetStream();
byte[] buff;
while (__bRunning)
{
buff = new byte[1000];
ns.Read(buff, 0, 1000);
string line = System.Text.Encoding.Default.GetString(buff);
}
//ns.Close();
client.Close();
}
catch(Exception e)
{
//Reconnect?
client.Close();
client = null;
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用C#.NET
小智 1
没有可用于获取连接断开通知的事件。
可能有 2 种可能的解决方案。
轮询。您有单独的线程尝试在不同的线程中不断轮询套接字。请参阅立即检测客户端与服务器套接字的断开连接
如果您对套接字或使用套接字的接口具有低级别控制,则可以对读写方法执行 try..catch ,或对读写方法的包装器执行 try..catch ,并且当出现任何异常时,您可以重新执行连接并尝试读写。