快速tcp服务器可用性检查

问题描述 投票:0回答:1

我想制作一个具有tcp / ip客户端的Unity3D应用。它应该定期检查是否有可用的服务器,如果有,请尝试连接到该服务器。我尝试了如下]

            _client = new TcpClient(_tcpAddress, _tcpPort);
            if (!_client.Connected)
            {
                return false;
            }

但是每次调用构造函数时,它都会严重滞后。有没有更快的方法来检查指定端口上是否有服务器?

c# unity3d tcp
1个回答
0
投票

查看它声明的specific constructor you're using(强调我的意思:):

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

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

我建议改为使用default constructor并调用BeginConnect和相应的BeginConnect方法,或者如果您可以在Unity中使用异步/等待模式,则可以尝试使用EndConnect

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

EndConnect
© www.soinside.com 2019 - 2024. All rights reserved.