什么是使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;
}
}
我正在使用C#.NET
答案 0 :(得分:1)
没有可用于获取断开连接通知的事件。
可能有2种可能的解决方案。
轮询。你有单独的线程试图在不同的线程中连续完成轮询套接字。请参阅Instantly detect client disconnection from server socket
如果您对套接字或使用套接字的接口具有低级别控制,则可以对读取和写入方法执行try..catch,或者对读取和写入方法的包装器执行try..catch,如果有您可以重新连接并尝试读写的任何异常。