[英]Android and IPv6 in Java
我正在开发一个Android应用程序,我需要使用IPv6连接到服务器。
在手机上启用IPv6,我可以通过ip addr
查看我的本地IPv6地址。 我也可以从PC上成功ping6
我的手机,反之亦然。
但是,我试图通过Java命令NetworkInterface.getNetworkInterfaces()
获取Android上的本地地址我只获得IPv4地址。
我也尝试打开一个客户端套接字,但行Socket s = new Socket(MYSERVERIPV6ADDRESS, PORT);
总是抛出java.net.SocketException: Invalid argument
。 我确信地址是正确的,因为我在我的计算机上尝试使用相同的代码并且工作正常。
似乎IPv6受操作系统支持,但不受Java虚拟机支持。 有没有办法解决这个问题?
在Inet6Address中使用此静态方法获取地址的Inet6Address对象,
Inet6Address getByAddress(String host,byte [] addr,int scope_id)
然后使用,以下套接字构造函数来获取套接字,
套接字(InetAddress dstAddress,int dstPort)。
IP6支持是供应商的选择,据我所知,支持就在那里。
我假设你在模拟器中测试你的应用程序。 看看android如何进行网络连接, http://developer.android.com/guide/developing/devices/emulator.html#emulatornetworking它位于一个寻址10.0.2.1的IPv4路由器后面。 因此,您无法使用IPv6打开套接字。 如果存在从手机到目的地的IPv6兼容的所有路由器的路径,则全部依赖。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.