Java 如何从IPV6中的CIDR计算最后一个IP地址
我正在尝试使用ApacheCommonsNet for IPV4从CIDR计算最后一个IP地址Java 如何从IPV6中的CIDR计算最后一个IP地址,java,ipv6,apache-commons,subnet,apache-commons-net,Java,Ipv6,Apache Commons,Subnet,Apache Commons Net,我正在尝试使用ApacheCommonsNet for IPV4从CIDR计算最后一个IP地址 SubnetUtils su = new SubnetUtils(cidr); SubnetInfo si = su.getInfo(); si.getHighAddress(); 它对IPV6不起作用,有人能建议一些库来解决这个问题吗?通常,IPV6子网将是/64(很少有例外,其他子网大小可能会破坏这一点)。由于IPv6甚至没有广播概念,子网中的最后一个地址将具有ffff:ffff:ffff:ff
SubnetUtils su = new SubnetUtils(cidr);
SubnetInfo si = su.getInfo();
si.getHighAddress();
它对IPV6不起作用,有人能建议一些库来解决这个问题吗?通常,IPV6子网将是
/64
(很少有例外,其他子网大小可能会破坏这一点)。由于IPv6甚至没有广播概念,子网中的最后一个地址将具有ffff:ffff:ffff:ffff
作为最后64位。IPv6还可以使用子网中的第一个(0000:0000:0000:0000
)地址。这比IPv4容易得多,因为子网中的每个地址都是有效地址。可以执行此处描述的操作
对于任何给定的CIDR字符串,无论是IPv4(如1.2.3.4/16)还是IPv6(如1:2:3:4::/64),都可以执行以下操作:
IPAddressString string = new IPAddressString("1:2:3:4::/64");
IPAddress subnet = string.getAddress();
IPAddress highest = subnet.getHighest();
String highestString = highest.toCanonicalString();
System.out.println(highestString);
对于1:2:3:4::/64,上述代码的输出为1:2:3:4:ffff:ffff:ffff:ffff“要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题对于堆栈溢出来说是离题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决问题所做的工作。”