问题描述
我有一个来自不同子网的IP列表,例如:
10.181.192.18 255.255.255.248
10.181.192.26 255.255.255.248
我想生成此类IP的所有IP详细信息,例如网络,前缀(例如,在这种情况下为/ 29),范围等。
我对Java没有生成此类细节的方法吗?!
解决方法
如果这些是4个IP地址,则无法从它们生成网络,网络掩码和子网范围。
如果它们是此计算机的IP地址,则可以使用NetworkInterface
API中的方法来查询接口及其绑定的InterfaceAddress
列表。 InterfaceAddress
允许您检索前缀长度,然后可以使用前缀长度来计算IP范围。
如果这些实际上是IP地址+网络掩码对(它们在出现在我看来是),那么您已经拥有了所需的信息。只需从网络掩码计算前缀长度,从IP和网络掩码计算网络范围即可。
我不知道任何进行计算的Java SE API,但是它们很简单。将IP地址和掩码转换为整数(或字节数组),对位数进行计数,进行一些按位运算,然后转换回标准符号。