我希望我的客户端应用程序连接到我的服务器应用程序,并在连接丢失时不断尝试重新连接。
我目前正在尝试使用计时器每秒检查一次连接,首先尝试使用 NetworkStream.Write 发送数据包,然后检查 TcpClient.Connected,但它似乎不起作用。客户端断开连接后,TcpClient.Connected 永远不会返回 false。
这样做的最简单方法是什么?
我希望我的客户端应用程序连接到我的服务器应用程序,并在连接丢失时不断尝试重新连接。
我目前正在尝试使用计时器每秒检查一次连接,首先尝试使用 NetworkStream.Write 发送数据包,然后检查 TcpClient.Connected,但它似乎不起作用。客户端断开连接后,TcpClient.Connected 永远不会返回 false。
这样做的最简单方法是什么?
如果连接关闭,它应该抛出异常。您可以抓住它并重新打开连接。TcpListener
这是我在连接一段时间后关闭的异常TcpClient
。
System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
编辑: 这是您如何不断重新尝试连接的示例。请注意,根据您的情况,您可能需要一个计数器或计时器,以便它不会永远重试。
public class PersistantTcpClient
{
TcpClient Client { get; set }
public void Start()
{
while (true)
{
try
{
this.Client.Connect("host", port)
// once it can connect, get back to work!
DoWork();
}
catch (SocketException)
{
// if it cannot connect, keep trying
}
}
}
}