2012-06-05 15 views
28

मेरे पास एक एंड्रॉइड ऐप है जो एक पीसी पर एक प्रोग्राम से बात करता है। मैं एंड्रॉइड (जावा) सॉकेट क्लास का उपयोग कर रहा हूं। अगर मैं एंड्रॉइड से कुछ भेजता हूं तो अगली बार जब मैं एंड्रॉइड से कुछ भेजता हूं तो मुझे पीसी ऐप को रोकना और पुनरारंभ करना होता है। मुझे आईओ अपवाद "टूटा हुआ पाइप" मिलता है। मेरा सवाल इसके बारे में नहीं है। अगर मैं सॉकेट के isClosed() विधि यह रिटर्न झूठी (यानी, इसे बंद कर दिया नहीं है), और अगर मैं सॉकेट के isConnected() क्वेरी यह रिटर्न विधि क्वेरी टूटी हुई पाइप अपवाद मिलने के बादसॉकेट के लिए "टूटा हुआ पाइप" अपवाद क्या है, वास्तव में, क्या करता है?

: यहाँ सवाल है सच है, यानी, यह जुड़ा हुआ है। क्या कोई मुझे इन परिणामों को समझा सकता है? अग्रिम में धन्यवाद!

+0

http://stackoverflow.com/a/3751722/776244 –

+0

समीर, यह लिंक एक टूटा हुआ पाइप अपवाद का अर्थ है। मैं पहले से ही समझता हूं; यही कारण है कि मैंने कहा कि मेरा सवाल इसके बारे में नहीं है। मैं दो सॉकेट विधियों से प्राप्त होने वाले रिटर्न वैल्यू को समझना चाहता हूं। मैंने इसे स्पष्ट करने के लिए शीर्षक अपडेट किया है। – user316117

उत्तर

18

टूटे हुए पाइप का मतलब है कि आप यहां किस बारे में बात कर रहे हैं। आपके पक्ष में कार्यक्रम में अभी भी इसकी सॉकेट चौड़ी खुली है, लेकिन दूसरी ओर सॉकेट संचार में नहीं है, और मानक "करीबी पाइप" प्रक्रिया के माध्यम से नहीं जाती है। यह तब हो सकता है जब दूसरी तरफ अचानक बिजली खो जाए, अगर भौतिक रेखा टूट गई हो, या जो कुछ भी हो। इस प्रकार, स्थानीय रूप से सॉकेट खुले और जुड़े दोनों के रूप में पंजीकरण कर रहा है - यह सिर्फ टूटी हुई पाइप से जुड़ा हुआ है। क्या आप यहाँ कुछ व्यावहारिक सलाह चाहते हैं, या सिर्फ सिद्धांत?

+0

मैं सॉकेट की प्रतिक्रिया को समझना चाहता था कि क्या कुछ ऐसा है जो मैं सॉकेट से पूछता हूं कि जब मैं अपना संचार चैनल खो देता हूं और वे दो सबसे संभावित तरीकों की तरह लगते हैं। तो क्या इसका मतलब यह है कि जब पाइप पहली सुराग तोड़ता है तो जब मैं कुछ भेजता हूं तो "कोशिश करें" ब्लॉक के "पकड़" भाग में लैंडिंग होगा? – user316117

+0

बहुत ज्यादा। टूटी हुई पाइप का पूरा बिंदु यह है कि यह कुछ भी नहीं है जो स्थानीय रूप से हुआ है, और आपके सिस्टम को सूचित नहीं किया गया था कि यह कब हुआ था। –

+0

मेरे पास इसी तरह की समस्या का राजा है, कृपया इस पोस्ट पर एक नज़र डालें http://stackoverflow.com/questions/34728935/android-local-video-sverver – chandil03

1

Socket.isClosed() और Socket.isConnected() केवल आपको बता क्या आपसॉकेट से किया है। वे कनेक्शन की स्थिति के बारे में आपको कुछ भी बताने के लिए नहीं हैं। आपने सॉकेट बंद नहीं किया है: यह खुला है। आपने सॉकेट कनेक्ट किया: यह जुड़ा हुआ है।

जब आपको SocketTimeoutException के अलावा 0 या कनेक्शन टाइमआउट ऑपरेट करने के लिए आपको सॉकेट बंद करना होगा।

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