我有一个相当简单的游戏,可以在每个版本上完美地运行到2.1,但是使用新的2.2(Froyo)版本我无法创建套接字。我正在使用mio包进行nio,并获得此异常:
W / System.err(263): java.net.SocketException:地址系列错误 W / System.err(263):at org.apache.harmony.luni.platform.OSNetworkSystem.connectStreamWithTimeoutSocketImpl(Native Method) W / System.err(263):at org.apache.harmony.luni.platform.OSNetworkSystem.connect(OSNetworkSystem.java:115) W / System.err(263):at org.apache.harmony.nio.internal.SocketChannelImpl.connect(SocketChannelImpl.java:272) W / System.err(263):at org.apache.harmony.nio.internal.PipeImpl $ SinkChannelImpl.finishConnect(PipeImpl.java:164) W / System.err(263):at org.apache.harmony.nio.internal.PipeImpl。(PipeImpl.java:48) W / System.err(263):at org.apache.harmony.nio.internal.SelectorProviderImpl.openPipe(SelectorProviderImpl.java:51) W / System.err(263):at org.apache.harmony.nio.internal.SelectorImpl。(SelectorImpl.java:141) W / System.err(263):at org.apache.harmony.nio.internal.SelectorProviderImpl.openSelector(SelectorProviderImpl.java:58) W / System.err(263):at java.nio.channels.Selector.open(Selector.java:48) W / System.err(263):at org.apache.mina.transport.socket.nio.SocketConnector.startupWorker(SocketConnector.java:248) W / System.err(263):at org.apache.mina.transport.socket.nio.SocketConnector.connect(SocketConnector.java:210) W / System.err(263):at org.apache.mina.transport.socket.nio.SocketConnector.connect(SocketConnector.java:137) W / System.err(263):at org.apache.mina.common.support.BaseIoConnector.connect(BaseIoConnector.java:40)
稍后在日志中,通常在我得到这个之后立即:
W / System.err(263):java.lang.NullPointerException W / System.err(263):at org.apache.harmony.nio.internal.SelectorImpl.wakeup(SelectorImpl.java:418) W / System.err(263):at org.apache.mina.transport.socket.nio.SocketConnector.connect(SocketConnector.java:222) W / System.err(263):at org.apache.mina.transport.socket.nio.SocketConnector.connect(SocketConnector.java:137) W / System.err(263):at org.apache.mina.common.support.BaseIoConnector.connect(BaseIoConnector.java:40)
我已经完成了所有的Google搜索并环顾四周,我能想到并且一无所获。我最接近的似乎是一个旧的JDK错误,在XP和Vista机器上支持ipv6(我正在运行Vista)。建议包括禁用ipv6(不起作用)和禁用ipv4并离开ipv6(对我不起作用,因为我的路由器和ISP不支持它,因此无论如何都无法测试)。
任何想法,建议,我没有尝试过的事情?
谢谢, 约什
答案 0 :(得分:15)
感谢Josh ...... 我可以在上面的链接中找到问题的答案
在打开选择器之前使用此代码
==> System.setProperty(“java.net.preferIPv6Addresses”,“false”);
我可以解决问题...
答案 1 :(得分:5)
这是一个错误,已修复:http://code.google.com/p/android/issues/detail?id=9431
您应该对java.net.preferIPv6Addresses解决方法非常小心,因为有些设备和网络确实需要IPv6。
(并且,正如原始海报所发现的,如果你可以使用io而不是nio,你通常应该。)
答案 2 :(得分:0)
是的,你是对的。我将此问题发布到谷歌群组,评论是“模拟器不支持IPv6”。链接在这里 http://code.google.com/p/android/issues/detail?id=9431
你知道为什么应用程序应该认为它的设备可以支持iPv6吗?我认为java应用程序程序员不需要知道这一点。