2011-02-01 1 views
4

Я недавно изучения о том, почему браузер в Android OS не поддерживает доступ к веб-сайты IPv6 через IPv6 адресов и Я думаю, что это связано с нативным методом getaddrinfo, вызванный android/dalvik/libcore/luni/src/main/java/java/net/ InetAddress.java, который затем вызывается приложением браузера , выдает UnknownHostException при попытке конвертировать URL-адрес IPv6 в адрес .Где осуществление «getaddrinfo» наречено InetAddress.java

Begin из строки 507, код InetAddress.java является:

try { 
    InetAddress[] addresses = bytesToInetAddresses(getaddrinfo(host), host); 
    addressCache.put(host, addresses); 
    return addresses; 

и нативный метод объявлен в строке 516 как:

private static native byte[][] getaddrinfo(String name) 
     throws UnknownHostException; 

Но я не нашел ни одного намека о том, где реализация этого нативного метода getaddrinfo есть, хотя я нашел два файла по имени getaddrinfo.c. Означает ли это правила JNI или NDK? Если поэтому, заявление System.loadLibary("NameOfTheLibrary") должно быть найдено, но я не нашел его.
Любой может дать мне подсказку о поиске реализации этого нативного метода getaddrinfo?

Полный исходный файл InetAddress.java можно найти на http://ooowjc.wikispaces.com/Attachments

ответ

3

В дереве Android источник, libcore/лунно/SRC/главная/родной/java_net_InetAddress.cpp.

Я бы включил ссылку на файл в хранилище android-git, но на данный момент site.

+0

Да, он может быть реализован на C++. Но даже он реализован на C++, он должен следовать правилу JNI, чтобы я все еще не мог понять. –

+0

Это следует за «Class_method», в этом случае InetAddress_getaddrinfo(). Файл назван в честь класса (java.net.InetAddress). – fadden

 Смежные вопросы

  • Нет связанных вопросов^_^