【发布时间】:2012-05-20 17:43:20
【问题描述】:
我正在开发一个 Android 应用程序,我需要使用 IPv6 连接到服务器。
电话上启用了 IPv6,我可以看到我的本地 IPv6 地址为 ip addr。我也可以在 PC 上成功地ping6 我的手机,反之亦然。
但是当我尝试通过 Java 命令NetworkInterface.getNetworkInterfaces() 获取 Android 上的本地地址时,我只能获取 IPv4 地址。
我也尝试打开一个客户端套接字,但线路
Socket s = new Socket(MYSERVERIPV6ADDRESS, PORT);
总是抛出java.net.SocketException: Invalid argument。
我确定地址是正确的,因为我在计算机上尝试使用相同的代码并且运行良好。
似乎操作系统支持 IPv6,但 Java 虚拟机不支持。有没有办法解决这个问题?
【问题讨论】:
-
更新:使用
Socket s = new Socket(MYSERVERIPV6ADDRESS+"/64%eth0", PORT);会抛出java.net.SocketException: Unknown host exception。