У меня есть довольно простая игра, которая работает отлично над каждой версией теперь до 2,1, но с новыми 2.2 (Froyo) выпускают, я не могу создать сокет. Я использую mina пакет для nio и получаю это исключение:
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): в 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 (Селекторный java:48) W/System.err (263): в org.apache.mina.transport.socket.nio. SocketConnector.startupWorker(SocketConnector.java: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): в 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.connect(SocketConnector.java:137) W/System.err (263): в org.apache.mina.common.support. BaseIoConnector.connect(BaseIoConnector.java:40)
Я сделал весь поиск с помощью Google и оглядывание, о котором я могу думать и ничего не нашел. Самое близкое я приехал, кажется, старая ошибка JDK с поддержкой ipv6 на XP и машинах Vista (я запускаю Vista). Рекомендации включали отключение ipv6 (который не работал), и отключающий ipv4, и уезжающий ipv6 (не будет работать на меня как мой маршрутизатор, и ISP не поддерживают его и так не мог протестировать так или иначе).
Какие-либо мысли, предложения, вещи я не попробовал?
Спасибо, Josh
это была ошибка, которая была исправлена: http://code.google.com/p/android/issues/detail?id=9431
вы должны быть очень будьте осторожны с обходным решением java.net.preferIPv6Addresses, потому что есть устройства и сети, где вам нужен IPv6.
(и, как было обнаружено в оригинальном плакате, если вы можете использовать io, а не nio, вы обычно должны.)
Да, вы правы. Я разместил эту проблему в группах Google и получил комментарий «эмулятор не поддерживает IPv6». Вот ссылка http://code.google.com/p/android/issues/detail?id=9431
Знаете ли вы, почему приложение должно думать, что его устройство поддерживает iPv6 или нет? Я думаю, что программистам Java-приложений это не нужно знать.
Спасибо Джошу ... Я мог бы получить ответ для этой проблемы по ссылке выше
, используя этот код, прежде чем открывать Selector
==> System.setProperty ("java.net.preferIPv6Addresses", "false");
я могу передать задачу ...