【问题标题】:method in Java to get all IP subnet detailJava中获取所有IP子网详细信息的方法
【发布时间】:2020-12-17 21:28:40
【问题描述】:

我有一个来自不同子网的 IP 列表,例如:

10.181.192.18   255.255.255.248
10.181.192.26   255.255.255.248

我想为此类 IP 生成所有 IP 详细信息,例如网络,前缀(例如在这种情况下是 /29),可能是范围等。

Java 没有这样的方法来生成这样的细节,我说得对吗?!

【问题讨论】:

标签: java ip subnet


【解决方案1】:

如果是 4 个 IP 地址,则无法从中生成网络、网络掩码和子网范围。

如果它们是>thisNetworkInterface API 中的方法来查询接口及其绑定的InterfaceAddress 列表。 InterfaceAddress 允许您检索前缀长度,然后您可以使用它来计算 IP 范围。

如果它们实际上是 IP 地址 + 网络掩码对(它们在我看来是这样),那么您已经拥有了所需的信息。只需根据网络掩码计算前缀长度,根据 IP 和网络掩码计算网络范围。

我不知道有任何 Java SE API 可以进行计算,但它们是直截了当的。将 IP 地址和掩码转换为整数(或字节数组)、计数位、执行一些按位运算并转换回标准表示法。

【讨论】:

  • 是的,我同意。最好的办法是使用掩码并编写一些例程将地址合并为适当的 CIDR 前缀。而且您对缺少任何类来操作这些地址也是正确的。没有 dottedquad 转换,没有掩码到 CIDR 转换等。但好消息是所有这些都很容易编写。
猜你喜欢
  • 1970-01-01
  • 2019-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多