2010-05-21 14 views
8

पर एंड्रॉइड 2.2 और "खराब पता परिवार" मेरे पास एक साधारण सरल गेम है जो अब 2.1 के माध्यम से प्रत्येक संस्करण पर पूरी तरह से काम करता है, लेकिन नई 2.2 (फियोयो) रिलीज के साथ मैं सॉकेट बनाने में असमर्थ हूं। मैं NIO के लिए मीना पैकेज का उपयोग कर रहा है, और इस अपवाद:सॉकेट कनेक्ट

डब्ल्यू/System.err (263): java.net.SocketException: खराब पते के परिवार डब्ल्यू/System.err (263): org.apache.harmony.luni.platform.OSNetworkSystem.connectStreamWithTimeoutSocketImpl (मूल विधि) डब्ल्यू/System.err (263): org.apache.harmony.luni.platform.OSNetworkSystem.connect (OSNetworkSystem.java:115) पर डब्ल्यू/System.err (263): org.apache.harmony.nio.internal.SocketChannelImpl.connect (सॉकेटChannelImpl.java7272) डब्ल्यू/System.err (263): org.apache.harmony.nio.internal पर .PipeImpl $ SinkChannelImpl.finishConnect (PipeImpl.java:164) डब्ल्यू/System.err (263): पर या g.apache.harmony.nio.internal.PipeImpl। (PipeImpl.java:48) डब्ल्यू/System.err (263): org.apache.harmony.nio.internal.electorProviderImpl.openPipe (SelectorProviderImpl.java:51) पर डब्ल्यू/System.err (263): org.apache.harmony.nio.internal.electorImpl। (SelectorImpl.java:141) डब्ल्यू/System.err (263): org.apache.harmony.nio.internal पर .SelectorProviderImpl.openSelector (SelectorProviderImpl.java:58) डब्ल्यू/System.err (263): java.nio.channels.Selector.open (selector.java:48) डब्ल्यू/System.err (263): संगठन में .apache.mina.transport.socket.nio.SocketConnector.startupWorker (सॉकेटकनेक्टर.जावा 4848) डब्ल्यू/System.err (263): org.apache.mina.transport.socket.nio.SocketConnector.connect (सॉकेटकनेक्टर) पर। जावा: 210) डब्ल्यू/System.err (263): org.apache.mina.transport.socket.nio.SocketConnector.connect (सॉकेटकॉन nector.java:137) डब्ल्यू/System.err (263): org.apache.mina.common.support.BaseIoConnector.connect पर (BaseIoConnector.java:40)

लॉग में बाद में, आमतौर पर तुरंत मैं निम्नलिखित इस:

डब्ल्यू/System.err (263): java.lang.NullPointerException डब्ल्यू/System.err (263): org.apache.harmony.nio.internal.SelectorImpl.wakeup पर (SelectorImpl.javavertis18) डब्ल्यू/System.err (263): org.apache.mina.transport.socket.nio.SocketConnector.connect (सॉकेटकनेक्टर.जावा 2222) डब्ल्यू/System.err (263): पर org.apache.mina.transport.socket.nio.SocketConnec tor.connect (SocketConnector.java:137) डब्ल्यू/System.err (263): org.apache.mina.common.support.BaseIoConnector.connect पर (BaseIoConnector.java:40)

मैंने किया है सभी गुगल और चारों ओर देखकर मैं कुछ भी नहीं सोच सकता और पाया। एक्सपी और विस्टा मशीनों (मैं Vista चला रहा हूं) पर आईपीवी 6 समर्थन के साथ सबसे नज़दीकी जेडीके बग प्रतीत होता हूं। सिफारिशों में आईपीवी 6 को अक्षम करना (जो काम नहीं करता) और आईपीवी 4 को अक्षम करना और आईपीवी 6 छोड़ना (मेरे राउटर के रूप में मेरे लिए काम नहीं करेगा और आईएसपी इसका समर्थन नहीं करता है और इसलिए किसी भी तरह से परीक्षण नहीं कर सका)।

कोई विचार, सुझाव, चीजें मैंने कोशिश नहीं की है?

धन्यवाद, जोश

+0

आप अपने सॉकेट सेटअप कोड पोस्ट कर सकते हैं? –

+0

हाय रोमन, मैं एक गेमिंग एपीआई का उपयोग कर रहा हूं, लेकिन मुझे कोड प्राप्त करने में सक्षम होना चाहिए। दिलचस्प बात यह है नहीं है कि मैं क्या का उपयोग कर रहा हूँ, लेकिन दूसरों को एक ही समस्या आ रही है: http://www.smartfoxserver.com/forums/viewtopic.php?p=30837&sid=74947ea6a890930771eab7fc36ab41ec मैं अगर मैं कर सकते हैं देखेंगे वह कोड ढूंढें जो चीज़ों को सेट करता है और इसे यहां पोस्ट करता है। - जोश – Josh

+0

एक त्वरित अद्यतन। मीना पैकेज में समस्या उत्पन्न करने वाले कोड को खोजने की कोशिश करने की प्रक्रिया में, मैंने अभी फैसला किया है कि एक अलग स्टैक का उपयोग करना आसान होगा। मानक java.net.Socket सामान का उपयोग कर अर्ध कस्टम समाधान में इसे बदलने में - सब कुछ ठीक काम करता है। मान लीजिए कि यह इस विकल्प के बिना फंस गए किसी की मदद नहीं करेगा, लेकिन यह मेरे लिए काम करता है - इसलिए आगे बढ़ना। - जोश – Josh

उत्तर

5

यह एक बग था और है निर्धारित किया गया: http://code.google.com/p/android/issues/detail?id=9431

क्योंकि वहाँ उपकरणों और नेटवर्क रहे हैं आप, java.net.preferIPv6Addresses वैकल्पिक हल के साथ बहुत सावधान रहना चाहिए जहां आप आईपीवी 6 चाहते हैं।

(और, के रूप में मूल रूप से पोस्ट पाया, तो आप कब बल्कि NIO से आम तौर पर उपयोग कर सकते हैं, तो आप । चाहिए)

+0

वोट दें, यह देखते हुए कि मैं वास्तव में एनआईओ का उपयोग करना चाहता हूं, क्या आपको पता है कि डिवाइस को आईपीवी 6 समर्थन है या नहीं, और केवल आईपीवी 6 समर्थन संभव होने पर वर्कअराउंड फिक्स लागू करना संभव है? वैकल्पिक रूप से, जब तक आप अपवाद का अनुभव नहीं करते हैं तब तक प्रतीक्षा करें और फिर कार्यवाही लागू करें और पुनः प्रयास करें? – RenniePet

0

हाँ, तुम ठीक कह रहे हैं। मैंने इस समस्या को Google समूहों में पोस्ट किया और टिप्पणी "एमुलेटर आईपीवी 6 का समर्थन नहीं करता"। यहां लिंक http://code.google.com/p/android/issues/detail?id=9431

क्या आपको पता है कि एप्लिकेशन को क्यों लगता है कि यह डिवाइस iPv6 का समर्थन कर सकता है या नहीं? मुझे लगता है कि जावा एप्लिकेशन प्रोग्रामर को यह जानने की जरूरत नहीं है।

15

जोश ... के लिए धन्यवाद मैं (एक चयनकर्ता

==> System.setProperty खोलने "java.net से पहले ऊपर

लिंक पर इस समस्या के लिए andswer प्राप्त इस कोड का उपयोग कर सकता है। preferIPv6Addresses "," झूठा ");

मैं समस्या पारित कर सकते हैं ...

+0

मेरे लिए भी काम करता है। – miracle2k

+0

मेरे लिए काम करता है। मेरा पर्यावरण उबंटू 10.4 सिस्टम पर चल रहा है। –

+0

यह वास्तविक उपकरणों पर एक खतरनाक कामकाज है। कृपया _my_ answer ;-) –

संबंधित मुद्दे