나는 아파치 커먼즈 검사기와 구아바를 시험해 보았습니다. 두 라이브러리는 범위 ID (주어진 예제에서 % 15)가있는 IPv6 주소에 대해 유효하지 않은 값을 반환합니다. 예. fe80 :: 8b2 : d61e : e5c : b333 % 15범위 ID가있는 IPv6을 확인하는 방법은 무엇입니까?
유효한 IPv6 주소로 간주되는 Java 라이브러리가 있습니까?
나는 아파치 커먼즈 검사기와 구아바를 시험해 보았습니다. 두 라이브러리는 범위 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
내가 링크 로컬 주소의 범위를 이해하는 모든 웹 응용 프로그램을 찾을 못하고있다. –