2017-01-11 5 views
0

CIDR로 지정된 IP 범위 목록이 있습니다. 범위를 비교하고 이미 다른 범위에 포함 된 모든 범위를 제거하려고합니다.Java의 Ip 범위 목록 (CIDR 포함)

예 : 내가 가진 :

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 패키지를 사용해 보았지만 잘못된 것이 아니라면 범위를 주소와 비교하고 범위 자체를 비교할 수는 없습니다.

해당 범위를 비교하는 데 도움이되는 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