2011-02-01 3 views
4

저는 최근에 안드로이드 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

답변

3

에서 찾을 수 있습니다.

나는 android-git 저장소에 파일에 대한 링크를 포함 시키겠다. 그러나 site은 지금 순간적으로 접근하고있는 것처럼 보인다.

+0

예, C++로 구현할 수 있습니다. 그러나 C++로 구현 되더라도 JNI 규칙을 따라야하므로 이해할 수 없습니다. –

+0

"Class_method"다음에 InetAddress_getaddrinfo()가옵니다. 파일 이름은 클래스 (java.net.InetAddress)의 이름을 따서 지정됩니다. – fadden

관련 문제