正在等待网络连接

本文关键字:连接 网络 在等待 | 更新日期: 2023-09-27 17:59:59

我正在尝试创建一个程序,以便从网络上的另一台计算机发送和接收字符串。只有一对独特的计算机通过该程序连接在一起。除了第一个连接之外,大部分都完成了,并且工作得很完美。只有当两台计算机同时打开程序时,才能建立第一个连接。因为另一台计算机上的服务器将不会运行,因此连接将被拒绝。这是代码:

public MultiplayerState2(Game1 game)
    {
        this.game = game;
        localIp = GetLocalIP();

        server = new TcpListener(IPAddress.Parse(localIp), localPort);

        server.Start();
        networkingThread = new Thread(getData);
        networkingThread.Start();
        clientThread = new Thread(connectClient);
        clientThread.Name = "Connect Client";
        clientThread.Start();
    }
    void connectClient()
    {
        while (client == null)
        {
            try
            {
                client = new TcpClient(remoteIp, remotePort);
                Console.WriteLine("Connected");
                clientThread.Abort();
            }
            catch
            {
                Console.WriteLine("Waiting for partner");
            }
        }
    }

这里,connectClient应该等待来自计算机的连接。但我得到的唯一输出是waiting for partner。这是等待连接的正确方式吗?如果是,为什么它不起作用?

正在等待网络连接

TcpClient构造函数尝试连接到在指定端口上侦听的服务器。但此过程超时1分钟。如果连接在1分钟内没有成功,它将被关闭并抛出异常;因此你得到了例外。

这是尝试连接到服务器的唯一方法。您唯一可以添加的是使线程休眠(Thread.Sleep(n))一段时间,比如10秒左右(取决于您的上下文)。