如何使用 Java 获取在同一网络(子网)中连接的 IP 列表
2022-09-01 01:33:40
如何使用 Java 获取连接到同一子网的设备的 IP 地址列表?
如何使用 Java 获取连接到同一子网的设备的 IP 地址列表?
当网络上的主机对 ICMP 包 (ping) 做出反应时,这应该可以正常工作(>JDK 5):
public void checkHosts(String subnet){
int timeout=1000;
for (int i=1;i<255;i++){
String host=subnet + "." + i;
if (InetAddress.getByName(host).isReachable(timeout)){
System.out.println(host + " is reachable");
}
}
}
调用子网 (192.168.0.1-254) 的方法,如下所示:
checkHosts("192.168.0");
没有测试它,但应该像这样工作。显然,这只检查IP地址最后一个字节中的254台主机...
检查:
http://download-llnw.oracle.com/javase/6/docs/api/java/net/InetAddress.html#isReachable%28int%29 http://blog.taragana.com/index.php/archive/how-to-do-icmp-ping-in-java-jdk-15-and-above/
希望有所帮助
要列出 LAN 中连接的主机,您需要 ping 通子网上的所有可用 IP 地址。但是ping消息可能会受到防火墙的限制,因此更安全的方式可以为LAN的IP地址范围内的每个IP地址打开一个套接字。