【发布时间】:2019-11-26 11:58:00
【问题描述】:
我正在尝试使用TcpClient 列出本地网络中打开某个端口以进行侦听的所有 IP 地址。
下面的代码可以运行,但问题是它非常慢并且会阻止 UI 的执行。我需要一个可以列出 ip 地址并且可以每秒刷新一次的代码(或者如果可能的话更好)。
这是我尝试过的:
public void Start()
{
StartCoroutine(ScanNetwork());
}
IEnumerator ScanNetwork()
{
while (true)
{
yield return new WaitForSeconds(1);
for (int i = 0; i < 254; i++)
{
string address = "192.168.1." + i;
TcpClient client = new TcpClient();
if (client.ConnectAsync(IPAddress.Parse(address), GameManager.PORT).Wait(5))
{
Debug.Log("Success @" + address);
}
client.Dispose();
}
}
}
【问题讨论】:
-
假设 192.168.1.x 已经是一个根本性的错误......
-
你在域控制器下吗?
-
@AustinTFrench,以及假设任何网络是
/24。这个错误我已经见过太多次了。 -
@RonMaupin 同意,但我认为在任何级别进入子网划分的任何代码都可能有点太多信息(至少对于 cmets ;))
标签: c# unity3d networking ip