저는 최근에 안드로이드 OS의 브라우저 인 이 IPv6 URL을 통해 IPv6 웹 사이트에 액세스하는 것을 지원하지 않는 이유에 대해 연구했습니다. 네이티브 메소드 브라우저 응용 프로그램에 의해 호출되는 android/dalvik/libcore/luni/src/main/java/java/net/ InetAddress.java
에 의해 호출 된 getaddrinfo
은 IPv6 URL을 주소로 변환하려고 시도 할 때 UnknownHostException
을 던집니다.InetAddress.java에 의해 호출 된 "getaddrinfo"의 구현은 어디에 있습니까
try {
InetAddress[] addresses = bytesToInetAddresses(getaddrinfo(host), host);
addressCache.put(host, addresses);
return addresses;
및 기본 방법은 같은 라인 (516)에 선언 :
라인 (507)에서 시작, InetAddress.java
의 코드는
private static native byte[][] getaddrinfo(String name)
throws UnknownHostException;
하지만 난에 대한 힌트를 발견하지 않았습니다 이 기본 메서드 getaddrinfo
의 구현은 getaddrinfo.c
이라는 두 개의 파일이 있지만 발견되었습니다. JNI 나 NDK의 규정을 따르고 있습니까? 인 경우 System.loadLibary("NameOfTheLibrary")
의 진술은 이어야하지만 찾지 못했습니다.
아무도 내게이 기본 메서드 getaddrinfo
의 구현을 찾는 힌트를 줄 수 있을까요?
InetAddress.java
의 전체 소스 파일은 libcore/luni/SRC/기본/주/java_net_InetAddress.cpp, 안드로이드 소스 트리에서 http://ooowjc.wikispaces.com/Attachments
예, C++로 구현할 수 있습니다. 그러나 C++로 구현 되더라도 JNI 규칙을 따라야하므로 이해할 수 없습니다. –
"Class_method"다음에 InetAddress_getaddrinfo()가옵니다. 파일 이름은 클래스 (java.net.InetAddress)의 이름을 따서 지정됩니다. – fadden