【问题标题】:Compare a list of Ip Ranges (with CIDR) in Java比较 Java 中的 IP 范围列表(使用 CIDR)
【发布时间】:2017-01-11 12:24:27
【问题描述】:

我有一个使用 CIDR 指定的 IP 范围列表。我想比较范围并删除已包含在另一个范围中的所有范围。

例子:我有:

10.152.0.0/14

10.152.2.0/24

10.153.3.0/24

在结果中应该只保留 10.152.0.0/14,因为其他两个已经包含在其中了。

我尝试使用 org.apache.commons.net.util 包,但如果我没有错,它只能将 Range 与 Adress 进行比较,而不能比较 Ranges 本身。

Java 中是否有任何库可以帮助我比较这些范围?

【问题讨论】:

    标签: java ip range cidr


    【解决方案1】:

    请查看以下链接CIDRUtils。您需要自己进行检查,但方法调用 isInRange 已实现(未记录在案)。这在here之前也有回答过

    【讨论】:

    • 好吧,这看起来很像来自 org.apache.commons.net.util --> SubnetUtils.SubnetInfo 的isInRange。我希望有一种方法可以直接比较两个范围。
    • 好的,我按照你的建议做了。我没有使用 CIDRUtils,但如上所述 org.apache.commons.net.util 包在我的列表中创建每个范围的对象。之后,我通过将每个范围的第一个和最后一个 Ip 与所有其他范围进行比较来手动检查它们。我在“isInRangeand getAllAddresses”的帮助下做到了这一点。如果范围可以相互重叠,这将不起作用,但对我来说不是这样。
    猜你喜欢
    • 2015-05-20
    • 2023-04-05
    • 2017-03-04
    • 2012-11-04
    • 1970-01-01
    • 2015-11-08
    • 2017-10-06
    • 2011-06-28
    • 1970-01-01
    相关资源
    最近更新 更多