作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在 Java 中,我需要获取给定 IP 网络包含的所有 IP 地址的列表。
例如让网络为:192.168.5.0/24 那么输出将为 (192.168.5.0 ... 192.168.5.255)。
我可以想到下面的方法,但它看起来很脏,有什么优雅的方法吗? InetAddress
中没有相同的功能类。
从输入的 IP 和子网掩码中获取网络 Ip。
mask = (long)(0xffffffff) << (32-subnetMask);
Long netIp = getLongfromIp(Inputip)& mask;
函数“getLongfromIp”包含来自 - How to convert string (IP numbers) to Integer in Java 的代码
通过子网掩码获取主机数
maxRange = (long)0x1<<(32-subnetMask);
通过添加 i for i in (0 .. maxRange)
获取所有希望的地址在网络中
将上述步骤中的 ip 转换为八位字节字符串。
Ps:我确定 IP 地址将仅在 IPV4 中。
最佳答案
回答我自己的问题,解决方案是使用 Apache commons.net 库
import org.apache.commons.net.util.*;
SubnetUtils utils = new SubnetUtils("192.168.1.0/24");
String[] allIps = utils.getInfo().getAllAddresses();
//appIps will contain all the ip address in the subnet
关于java - 从给定的 IP 地址和子网掩码获取所有 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26738561/
我是一名优秀的程序员,十分优秀!