我想制作一个具有tcp / ip客户端的Unity3D应用。它应该定期检查是否有可用的服务器,如果有,请尝试连接到该服务器。我尝试了如下]
_client = new TcpClient(_tcpAddress, _tcpPort);
if (!_client.Connected)
{
return false;
}
但是每次调用构造函数时,它都会严重滞后。有没有更快的方法来检查指定端口上是否有服务器?
查看它声明的specific constructor you're using(强调我的意思:):
此构造函数创建一个新的TcpClient,并对提供的主机名和端口号进行同步连接尝试。基础服务提供商将分配最合适的本地IP地址和端口号。 TcpClient 将阻止,直到它连接或失败。该构造函数使您可以初始化,解析DNS主机名并在一个方便的步骤中进行连接。
您的代码不是“滞后”,它正在积极等待连接成功或失败。
我建议改为使用default constructor并调用BeginConnect
和相应的BeginConnect
方法,或者如果您可以在Unity中使用异步/等待模式,则可以尝试使用EndConnect
。
尽管在Unity中,我认为一个更简单的方法可能是只使用协程(我不是Unity程序员,所以可能不是100%正确):
EndConnect