2

我希望我的客户端应用程序连接到我的服务器应用程序,并在连接丢失时不断尝试重新连接。

我目前正在尝试使用计时器每秒检查一次连接,首先尝试使用 NetworkStream.Write 发送数据包,然后检查 TcpClient.Connected,但它似乎不起作用。客户端断开连接后,TcpClient.Connected 永远不会返回 false。

这样做的最简单方法是什么?

4

1 回答 1

3

如果连接关闭,它应该抛出异常。您可以抓住它并重新打开连接。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
             }
        }
    }
}
于 2012-09-15T05:56:32.127 回答