Android getting ipv6 address from hostname

偶尔善良 提交于 2019-12-12 03:58:00

问题


I'm trying to to get IPv6 addresses from a hostname on an Android device.

My device is Nexus 7 and 6.0.1 version.

Below is the API I used:

InetAddress[] inets = InetAddress.getAllByName("hostname.com");
InetAddress address = InetAddress.getByName("hostname.com");

Those two API calls work fine for IPv4, but do not work for IPv6.

It shows the below errors:

01-10 10:04:18.945: W/System.err(474): java.net.UnknownHostException: Unable to resolve host "106.bmc.com: No address associated with hostname
01-10 10:04:18.945: W/System.err(474): at java.net.InetAddress.lookupHostByName(InetAddress.java:470)
01-10 10:04:18.945: W/System.err(474): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
01-10 10:04:18.945: W/System.err(474): at java.net.InetAddress.getByName(InetAddress.java:305)
01-10 10:04:18.946: W/System.err(474): Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
01-10 10:04:18.946: W/System.err(474): at libcore.io.Posix.android_getaddrinfo(Native Method)
01-10 10:04:18.946: W/System.err(474): at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55)
01-10 10:04:18.946: W/System.err(474): at java.net.InetAddress.lookupHostByName(InetAddress.java:451)

I also tried nslookup in Android terminal, and it works fine with IPv6:

Is there any way I can get an IPv6 address from a hostname using Android APIs?


UPDATE: I have used the dnsjava library to solve my problem.

Please refer to this related discuss:

Return IPv6 in Java

来源:https://stackoverflow.com/questions/41560351/android-getting-ipv6-address-from-hostname

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!