2017-01-11 42 views
0

我有IP列表以CIDR指定的範圍。我想比較範圍並刪除已經包含在另一個範圍內的所有範圍。比較Ip的範圍列表(用CIDR)在Java中

例如:我有:

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包,但如果我不是錯了,它可以將範圍僅比作一個ADRESS,而不是比較範圍本身。

是否有任何的Java庫,可以幫我比較一下這些範圍?

回答

0

請參閱以下鏈接CIDRUtils。您需要自己執行檢查,但實施方法調用isInRange(沒有記錄)。這也已經回答之前here

+0

好吧,這似乎很像是從org.apache.commons.net.util - > SubnetUtils.SubnetInfo'isInRange'相同。我希望能夠直接比較兩個範圍。 – d4rky91

+0

好的,我喜歡你的建議。我沒有使用CIDRUtils,但是正如前面提到的org.apache.commons.net.util包那樣在我的列表中創建每個範圍的對象。之後,我通過將每個範圍的第一個和最後一個Ip與所有其他範圍進行比較,手動檢查它們。我在'isInRange'和'getAllAddresses'的幫助下做到了。如果範圍可能彼此重疊,這將不起作用,但對我而言情況並非如此。 – d4rky91