8

我有一个相当简单的游戏,现在可以在 2.1 之前的每个版本上完美运行,但是在新的 2.2 (Froyo) 版本中,我无法创建套接字。我正在使用 nio 的 mina 包,并得到这个异常:

W/System.err(263):java.net.SocketException:错误的地址系列 W/System.err(263):在 org.apache.harmony.luni.platform.OSNetworkSystem.connectStreamWithTimeoutSocketImpl(本机方法) W/System.err(263):在 org.apache.harmony.luni.platform.OSNetworkSystem.connect (OSNetworkSystem.java:115) W/System.err(263): 在 org.apache.harmony.nio.internal.SocketChannelImpl.connect(SocketChannelImpl.java:272) W/System.err(263): 在 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):在 org.apache.harmony.nio.internal.SelectorProviderImpl.openPipe(SelectorProviderImpl.java:51) W/System.err(263):在 org.apache.harmony.nio.internal.SelectorImpl。 (SelectorImpl.java:141) W/System.err(263):在 org.apache.harmony.nio.internal。SelectorProviderImpl.openSelector(SelectorProviderImpl.java:58) W/System.err(263):在 java.nio.channels.Selector.open(Selector.java:48) W/System.err(263):在 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):在 org.apache.mina.transport.socket.nio.SocketConnector.connect(SocketConnector.java:137) W/System.err(263):在 org.apache.mina.common。 support.BaseIoConnector.connect(BaseIoConnector.java:40)248) W/System.err(263): 在 org.apache.mina.transport.socket.nio.SocketConnector.connect(SocketConnector.java:210) W/System.err(263): 在 org.apache.mina。 transport.socket.nio.SocketConnector.connect(SocketConnector.java:137) W/System.err(263):在 org.apache.mina.common.support.BaseIoConnector.connect(BaseIoConnector.java:40)248) W/System.err(263): 在 org.apache.mina.transport.socket.nio.SocketConnector.connect(SocketConnector.java:210) W/System.err(263): 在 org.apache.mina。 transport.socket.nio.SocketConnector.connect(SocketConnector.java:137) W/System.err(263):在 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): 在 org.apache.mina.transport.socket.nio.SocketConnector.connect(SocketConnector.java:222) W/System.err(263): 在 org.apache.mina.transport.socket.nio.SocketConnector。连接(SocketConnector.java:137)W/System.err(263):在 org.apache.mina.common.support.BaseIoConnector.connect(BaseIoConnector.java:40)

我已经完成了所有我能想到的谷歌搜索和环顾四周,但一无所获。我最接近的似乎是在 XP 和 Vista 机器上支持 ipv6 的旧 JDK 错误(我正在运行 Vista)。建议包括禁用 ipv6(不起作用)和禁用 ipv4 并离开 ipv6(对我不起作用,因为我的路由器和 ISP 不支持它,因此无法测试)。

有什么想法、建议和我没有尝试过的事情吗?

谢谢,乔什

4

3 回答 3

15

感谢乔希...我可以在上面的链接中得到这个问题的答案

在打开选择器之前使用此代码

==> System.setProperty("java.net.preferIPv6Addresses", "false");

我可以通过问题...

于 2010-07-12T04:34:02.007 回答
5

这是一个错误并已修复:http ://code.google.com/p/android/issues/detail?id=9431

您应该非常小心使用 java.net.preferIPv6Addresses 解决方法,因为有些设备和网络确实需要 IPv6。

(而且,正如原始海报所发现的,如果你可以使用 io 而不是 nio,你通常应该。)

于 2010-08-18T06:10:59.907 回答
0

是的,你是对的。我将此问题发布到谷歌群组,评论是“模拟器不支持 IPv6”。这是链接 http://code.google.com/p/android/issues/detail?id=9431

你知道为什么应用程序应该认为它的设备可以支持 iPv6 吗?我认为java应用程序程序员不需要知道这一点。

于 2010-07-02T02:33:34.687 回答