繁体   English   中英

Java中的Android和IPv6

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM