如何验证具有作用域 ID 的 IPv6?
How to validate IPv6 which has scope ID?
我尝试了 apache commons validator 和 Guava。两个库 return 对于其中具有作用域 ID(在给定示例中为 %15)的 IPv6 地址无效。例如。 fe80::8b2:d61e:e5c:b333%15
是否有任何 java 库认为它是有效的 IPv6 地址?
标准 java.net 类 InetAddress/Inet6Address 似乎正确地解析了它,例如
InetAddress inet6Address = Inet6Address.getByName("fe80::8b2:d61e:e5c:b333%15");
顺便说一句。确实 AC (1.5.1) InetAddressValidator 和 Guava (19.0) InetAddresses 似乎在此失败
如前所述,标准 Java 库解析范围并存储它。
此外,open-source IPAddress Java library 也支持作用域 ID。免责声明:我是那个图书馆的项目经理。这是示例来源:
IPAddressString ipAddrString = new IPAddressString("fe80::8b2:d61e:e5c:b333%15");
IPAddress addr = ipAddrString.getAddress();
if(addr.isIPv6()) {
IPv6Address ipv6Addr = addr.toIPv6();
String zone = ipv6Addr.getZone();
IPv6Address noZoneAddr = new IPv6Address(ipv6Addr.getBytes());
System.out.println(zone);
System.out.println(noZoneAddr);
}
输出:
15
fe80::8b2:d61e:e5c:b333
我尝试了 apache commons validator 和 Guava。两个库 return 对于其中具有作用域 ID(在给定示例中为 %15)的 IPv6 地址无效。例如。 fe80::8b2:d61e:e5c:b333%15
是否有任何 java 库认为它是有效的 IPv6 地址?
标准 java.net 类 InetAddress/Inet6Address 似乎正确地解析了它,例如
InetAddress inet6Address = Inet6Address.getByName("fe80::8b2:d61e:e5c:b333%15");
顺便说一句。确实 AC (1.5.1) InetAddressValidator 和 Guava (19.0) InetAddresses 似乎在此失败
如前所述,标准 Java 库解析范围并存储它。
此外,open-source IPAddress Java library 也支持作用域 ID。免责声明:我是那个图书馆的项目经理。这是示例来源:
IPAddressString ipAddrString = new IPAddressString("fe80::8b2:d61e:e5c:b333%15");
IPAddress addr = ipAddrString.getAddress();
if(addr.isIPv6()) {
IPv6Address ipv6Addr = addr.toIPv6();
String zone = ipv6Addr.getZone();
IPv6Address noZoneAddr = new IPv6Address(ipv6Addr.getBytes());
System.out.println(zone);
System.out.println(noZoneAddr);
}
输出:
15
fe80::8b2:d61e:e5c:b333