java - 如何使用 Java 获取连接在同一网络(子网)中的 IP 列表

标签 java networking

如何获取使用 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/

希望有所帮助

关于java - 如何使用 Java 获取连接在同一网络(子网)中的 IP 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3345857/

相关文章:

java - 禁用 "don' 不再询问”当用户第二次拒绝权限时出现的单选按钮

java - 随机访问文件写入以额外空格结束 Java

linux - FreeBSD中如何指定没有网关的路由接口(interface)?

java - Objective C 和 Java 之间的网络

python - 当代码放入函数中时,a 是未定义的

java - 对象类作为 Java 中的父类(super class)

java - Java中动态数组的二维静态数组

java - "IllegalArgumentException: UNMAPPABLE[1]"压缩带有希腊字符的文件时

java - 通过套接字和流的 JAXB - 阅读器 block

networking - 模拟器联网ip地址和虚拟路由器