私は、ApacheのコモンズバリデータとGuavaを試しました。両方のライブラリは、スコープID(この例では%15)を持つIPv6アドレスに対して無効な値を返します。例えば。 fe80 :: 8b2:d61e:e5c:b333%15スコープIDを持つIPv6を検証する方法は?
有効なIPv6アドレスと考えられるJavaライブラリがありますか?
私は、ApacheのコモンズバリデータとGuavaを試しました。両方のライブラリは、スコープID(この例では%15)を持つIPv6アドレスに対して無効な値を返します。例えば。 fe80 :: 8b2:d61e:e5c:b333%15スコープIDを持つIPv6を検証する方法は?
有効なIPv6アドレスと考えられるJavaライブラリがありますか?
標準の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アプリケーションを見つけるためには至っていません。 –