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