在Java/Android中,如何查找已知端口的本地网络服务器IP?

6
我希望能够快速查找局域网内服务器的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代码!

2个回答

3
你需要做两件事情——使用线程同时检查多个主机,并给套接字连接设置较短的超时时间。 这篇答案展示了一个非常类似的例子。

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接