Java中获取所有IP子网详细信息的方法

问题描述

我有一个来自不同子网的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地址和掩码转换为整数(或字节数组),对位数进行计数,进行一些按位运算,然后转换回标准符号。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...