我試過apache commons validator和番石榴。這兩個庫對於其中包含作用域ID(在給定示例中爲%15)的IPv6地址返回無效。例如。 fe80 :: 8b2:d61e:e5c:b333%15如何驗證具有作用域ID的IPv6?
是否有任何java庫認爲它是一個有效的IPv6地址?
我試過apache commons validator和番石榴。這兩個庫對於其中包含作用域ID(在給定示例中爲%15)的IPv6地址返回無效。例如。 fe80 :: 8b2:d61e:e5c:b333%15如何驗證具有作用域ID的IPv6?
是否有任何java庫認爲它是一個有效的IPv6地址?
標準java.net類InetAddress/Inet6Address似乎正確解析它,例如,
InetAddress inet6Address = Inet6Address.getByName("fe80::8b2:d61e:e5c:b333%15");
btw。事實上AC(1.5.1)InetAddressValidator和Guava(19.0)InetAddresses似乎在此失敗
有趣。聽起來像它應該作爲每個項目的錯誤提交。 – chrylis
如前所述,標準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
我還沒有找到任何Web應用程序,它能夠理解的鏈路本地地址的範圍。 –