我最近一直在研究为什么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
的完整源文件
答案 0 :(得分:3)
在Android源代码树中,libcore / luni / src / main / native / java_net_InetAddress.cpp。
我在android-git存储库中包含了一个指向该文件的链接,但site目前似乎已被清除。