Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 快速tcp服务器可用性检查_C#_Unity3d_Tcp - Fatal编程技术网

C# 快速tcp服务器可用性检查

C# 快速tcp服务器可用性检查,c#,unity3d,tcp,C#,Unity3d,Tcp,我想制作一个具有tcp/ip客户端的Unity3D应用程序。它应该定期检查是否有可用的服务器,如果有,则尝试连接到该服务器。我试着这样做 _client = new TcpClient(_tcpAddress, _tcpPort); if (!_client.Connected) { return false; } 但每次调用构造函数时,它都会严重滞后。有没有更快的方

我想制作一个具有tcp/ip客户端的Unity3D应用程序。它应该定期检查是否有可用的服务器,如果有,则尝试连接到该服务器。我试着这样做

            _client = new TcpClient(_tcpAddress, _tcpPort);
            if (!_client.Connected)
            {
                return false;
            }
但每次调用构造函数时,它都会严重滞后。有没有更快的方法检查指定端口上是否有服务器?

查看it状态(重点):

此构造函数创建一个新的TcpClient,并尝试对提供的主机名和端口号进行同步连接。基础服务提供商将分配最合适的本地IP地址和端口号。TcpClient将阻塞,直到它连接或失败。此构造函数允许您在一个方便的步骤中初始化、解析DNS主机名和连接

您的代码不是“滞后”,而是在积极等待连接成功或失败

我建议改为使用and或者调用and和相应的方法,或者如果您可以在Unity中使用async/await模式,也许可以尝试使用

尽管在Unity中,我认为更简单的方法可能是只使用一个协同程序(我不是Unity程序员,所以这可能不是100%正确):

如果(\u client==null)
将永远不会计算为
true
。感谢您找到错误;)我将其固定为
\u客户端。已连接
。但它仍然严重滞后
StartCoroutine(TestConnectionMethod());

private IEnumerator TestConnectionMethod()
{
     _client = new TcpClient(_tcpAddress, _tcpPort);
     yield return _client.Connected;
}