我想在短时间内找到本地网络服务器的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代码将不胜感激!
答案 0 :(得分:3)
您需要做两件事 - 使用线程同时检查多台主机,并为套接字连接提供较低的超时时间。
This answer显示了一个非常相似的例子。
答案 1 :(得分:2)
我可以建议查找愤怒的ip扫描程序的源代码。我认为它足够快。