Socket Connect上的Android 2.2和"Bad address family"

Jos*_*osh 8 android android-2.2-froyo

我有一个相当简单的游戏,可以在每个版本上完美地运行到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):在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):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)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.连接(SocketConnector.java:137)W/System.err的(263):在org.apache.mina.common.support.BaseIoConnector.connect(BaseIoConnector.java:40)

我做了所有的谷歌搜索,环顾四周,我能想到,什么都没发现.我最接近的似乎是一个旧的JDK错误,在XP和Vista机器上支持ipv6(我正在运行Vista).建议包括禁用IPv6(没有工作)和禁用IPv4和IPv6的离开(不会为我的工作我的路由器和ISP不支持它,所以无论如何也测试).

有什么想法,建议,我没试过的事情?

谢谢,乔希

小智 15

感谢Josh ...我可以在上面的链接中找到问题的答案

在打开Selector之前使用此代码

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

我可以通过这个问题......


Ell*_*hes 5

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

你应该非常小心java.net.preferIPv6Addresses的解决方法,因为有些设备和网络你需要IPv6.

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