InetAddress.java调用“getaddrinfo”的实现在哪里

时间:2011-02-01 13:36:04

标签: android ipv6

我最近一直在研究为什么Android操作系统中的浏览器 不支持通过IPv6 URL访问IPv6网站 我认为这是由于getaddrinfo调用的本机方法android/dalvik/libcore/luni/src/main/java/java/net/ InetAddress.java,然后由浏览器应用程序调用 尝试将IPv6 URL转换为时,会抛出UnknownHostException 它的地址。

从第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

可以在http://ooowjc.wikispaces.com/Attachments

找到InetAddress.java的完整源文件

1 个答案:

答案 0 :(得分:3)

在Android源代码树中,libcore / luni / src / main / native / java_net_InetAddress.cpp。

我在android-git存储库中包含了一个指向该文件的链接,但site目前似乎已被清除。