5

我想在短时间内找到本地网络上服务器的 IP 地址。我知道应用程序在服务器上使用的端口。

我试过这个,但它太慢了。即使我知道 IP,响应时间也太长(每个 IP 大约 4 秒)。考虑到这种方法,扫描从 10.0.0.0 到 10.0.0.255 的整个子网需要几分钟。

        String ip = "10.0.0.45";

        try {
            InetAddress ping = InetAddress.getByName(ip);
            Socket s = new Socket(ping, 32400);
            System.out.println("Server found on IP: " + ping.getCanonicalHostName());
            s.close();
        } catch (IOException e) {
            System.out.println("Nothing");
        }
}

我可以使用线程,但这仍然很慢。我见过应用程序在几毫秒内找到 IP。他们怎么做到的?Java代码将不胜感激!

4

2 回答 2

3

您需要做两件事 - 使用线程同时检查许多主机,并为套接字连接提供较低的超时时间。

这个答案显示了一个非常相似的例子。

于 2012-10-19T21:41:37.033 回答
2

我可以建议寻找愤怒的ip扫描仪的源代码。我认为这已经足够快了。

https://github.com/angryziber/ipscan

于 2012-10-19T21:41:16.227 回答