Я недавно изучения о том, почему браузер в 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
Да, он может быть реализован на C++. Но даже он реализован на C++, он должен следовать правилу JNI, чтобы я все еще не мог понять. –
Это следует за «Class_method», в этом случае InetAddress_getaddrinfo(). Файл назван в честь класса (java.net.InetAddress). – fadden