IPV6范围为CIDR

问题描述 投票:-1回答:1

我怎样才能编写带有IPV6开始和结束ip地址的Java程序,并在String中给出可能的CIDR列表我确实参考了这个[http://facedroid.blogspot.com/2010/06/ip-range-to-cidr.html]。但它只适用于IPV4我也需要IPV6。

get range ipv6 cidr
1个回答
0
投票

open-source IPAddress Java library可以为你做这件事。免责声明:我是IPAddress库的项目经理。

以下是执行此操作的示例代码:

static void toPrefixBlocks(String str1, String str2) {
    IPAddressString string1 = new IPAddressString(str1);
    IPAddressString string2 = new IPAddressString(str2);
    IPAddress one = string1.getAddress(), two = string2.getAddress();
    IPAddressSeqRange range = one.toSequentialRange(two);
    System.out.println("starting with range " + range);
    IPAddress blocks[] = range.spanWithPrefixBlocks();
    System.out.println("prefix blocks are " + Arrays.asList(blocks));
}

对于IPv6和IPv4,代码实际上都是相同的。由于您指定了IPv6,因此这是一个IPv6示例:

toPrefixBlocks("2001:db8:abcd:0012:1::","2001:db8:abcd:0012:3::");

输出是:

starting with range 2001:db8:abcd:12:1:: -> 2001:db8:abcd:12:3::
prefix blocks are [2001:db8:abcd:12:1::/80, 2001:db8:abcd:12:2::/80, 2001:db8:abcd:12:3::/128]
© www.soinside.com 2019 - 2024. All rights reserved.