2013-08-23 6 views
8

तो मुझे एक सॉकेट मिला है जो किसी बाहरी वेब पते से जुड़ा हुआ है और जब इसे एक निश्चित संदेश मिलता है तो इसे डिस्कनेक्ट करना होता है। मैंने socket.close() पर कॉल करने का प्रयास किया लेकिन socket.isConnected() अभी भी सत्य है। कोई जवाब नहीं हैएंड्रॉइड में मैं सॉकेट डिस्कनेक्ट कैसे करूं?

उत्तर

4

isConnected() केवल आपको बताता है कि आपने सॉकेट के साथ एक सफल कनेक्शन बनाया है या नहीं। isClosed() आपको बताता है कि क्या आपने close() कहा है।

चेक बाहर इस लोगों की प्रतिक्रिया https://stackoverflow.com/a/3701249/2453771

+0

ठीक है तो अगला प्रश्न कॉलिंग को बंद करने के लिए कॉल कर रहा है? और अगर नहीं होगा तो क्या होगा? – user2312638

+0

कॉलिंग 'क्लोज़()' सॉकेट के आपके पक्ष को बंद कर देता है। सर्वर को अधिसूचित नहीं किया गया है कि आपने सॉकेट को बंद कर दिया है। – Nick

0

socket.isClosed() 

एक Boolian रिटर्न, इस सॉकेट बंद कर दिया गया है या नहीं की कोशिश करो। देखें Sockets

0

"आप सॉकेट(), जो आप अनदेखा कर दिया लगते हैं उपयोग करते हैं, Socket.isConnected() आप isClosed के लिए देख सकते हैं कि Socket.connect() कहा जाता है या नहीं किया गया है। इसी तरह () और करीब()।

, सॉकेट, आवेदन के नियंत्रण में है, जिनमें से राज्य भ्रमित समग्र कनेक्शन की स्थिति , प्रोटोकॉल के नियंत्रण में है जिसके साथ से इन तरीकों परिणामों पर

भ्रम कनेक्ट किया गया है() और isClosed() बताएं कि आपने क्या किया है सॉकेट वहाँ कोई अन्य एपीआई से पढ़ सकते हैं और कनेक्शन की स्थिति निर्धारण करने के लिए लिख यह अच्छी तरह से समझाया जाता है कि एक बार आप .close() फोन कनेक्शन बंद कर दिया जाता है और आप isClosed() इसका पता लगा सकते हैं। "

Oracle documantion यहाँ <।

.close():

इस सॉकेट बंद कर देता है

इस सॉकेट पर वर्तमान में I/O ऑपरेशन में अवरुद्ध कोई भी थ्रेड सॉकेट अपवाद को फेंक देगा।

एक बार सॉकेट बंद हो जाने के बाद, यह नेटवर्किंग उपयोग के लिए उपलब्ध नहीं है (यानी पुनः कनेक्ट या रीबाउंड नहीं किया जा सकता है)। एक नई सॉकेट बनाने की आवश्यकता है। लौटे

0

http://developer.android.com/reference/java/net/Socket.html#close()

डेटा पर चेकसम करते हैं, सुनिश्चित करें कि आप सही मूल्य प्राप्त कर सकते हैं। यदि ऐसा है और आप सब कुछ बंद कर देते हैं और कोशिश करते हैं, तो यह ठीक होना चाहिए।

आप एक डीबगर में देख सकते हैं और सुनिश्चित कर सकते हैं कि कुछ भी लीक नहीं हो रहा है।

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