如何使TCP服务器自动重新连接到客户端? C#

时间:2016-12-15 05:41:56

标签: c# tcp

以下是我的TCP服务器端代码。问题是当客户端计算机上的应用程序关闭时,服务器无法自动尝试每2秒重新连接一次,直到连接。我怎样才能做到这一点?

我的想法是在连接到客户端之后,服务器创建一个状态线程,每30秒向该客户端发送一个字节,如果失败--->终止连接并重试再次连接。我不确定它是否会起作用。

public static TcpClient client = new TcpClient();
public static int port = 6446;
public static string connectTo = "192.168.0.11";
public static NetworkStream dataStream;


static void Main(string[] args)
{
    int retry = 0;

TryingConnect:
    try
    {
        do
        {
            if (retry == 10)
            {
                retry = 0;
                Console.Clear();
            }
            cout("Connecting...");
            IPAddress ipAddress = IPAddress.Parse(connectTo);
            client.Connect(ipAddress, port);
        } while (client.Connected != true);

        cout("Connected!");
        dataStream = client.GetStream();
    }
    catch (Exception ex)
    {
        // Debug: MessageBox.Show(ex.ToString());
        retry++;
        Thread.Sleep(2000);
        goto TryingConnect;
    }
}

1 个答案:

答案 0 :(得分:1)

服务器是侦听来自客户端的连接的通信方。客户端是启动连接的客户端。如果您希望服务器重新创建与客户端的丢失连接,则服务器在这种情况下实际上是客户端,因为它启动了新连接。

除了客户端服务器这两个词的含义:如果对等C喜欢S连接到它,C必须先监听并接受传入的连接,这不是普通客户的情况。即使C会这样做,C的网络实际上也必须可由S到达以创建新连接。通常情况并非如此,即如果C位于某个本地网络(家庭中的典型设置,工作且通常在移动电话上),则S无法到达C而C本身可能达到S.因此S无法建立连接回到C.