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