2016-09-30 6 views
0

나는 아파치 커먼즈 검사기와 구아바를 시험해 보았습니다. 두 라이브러리는 범위 ID (주어진 예제에서 % 15)가있는 IPv6 주소에 대해 유효하지 않은 값을 반환합니다. 예. fe80 :: 8b2 : d61e : e5c : b333 % 15범위 ID가있는 IPv6을 확인하는 방법은 무엇입니까?

유효한 IPv6 주소로 간주되는 Java 라이브러리가 있습니까?

+0

내가 링크 로컬 주소의 범위를 이해하는 모든 웹 응용 프로그램을 찾을 못하고있다. –

답변

1

표준 java.net 클래스 InetAddress/Inet6Address는 올바르게 구문 분석 한 것처럼 보입니다.

InetAddress inet6Address = Inet6Address.getByName("fe80::8b2:d61e:e5c:b333%15"); 

btw. 실제로 AC (1.5.1) InetAddressValidator와 Guava (19.0) InetAddresses가 실패한 것으로 보입니다.

+0

흥미 롭습니다. 그것은 각 프로젝트에 대한 버그로 제기되어야하는 것 같습니다. – chrylis

0

앞에서 대답했듯이 표준 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