Где находится реализация "getaddrinfo", вызываемая InetAddress.java - PullRequest
4 голосов
/ 01 февраля 2011

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

Начиная со строки 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

1 Ответ

3 голосов
/ 02 февраля 2011

В дереве исходников Android libcore / luni / src / main / native / java_net_InetAddress.cpp.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...