यह पता लगाने के लिए कि क्या यह जुड़ा हुआ है, मुझे एक (टीसीपी) सॉकेट कैसे जांचनी चाहिए?मैं कैसे जांच सकता हूं कि एक (टीसीपी) सॉकेट (डी) सी # में जुड़ा हुआ है या नहीं?
मैंने संपत्ति MSDN में पढ़ी है, लेकिन यह कहता है कि यह केवल अंतिम I/O के अनुसार राज्य को दिखाता है। यह मेरे लिए उपयोगी नहीं है, क्योंकि मैं सॉकेट से पढ़ने की कोशिश कर रहे से पहले करना चाहता हूं। टिप्पणी अनुभाग भी लिखते हैं कि:
आप कनेक्शन की वर्तमान स्थिति का निर्धारण करने की जरूरत है, एक nonblocking, शून्य-बाइट संदेश फोन करना। यदि कॉल सफलतापूर्वक लौटाता है या एक WAEWOULDBLOCK त्रुटि कोड (10035) फेंकता है, तो सॉकेट अभी भी कनेक्ट है; अन्यथा, सॉकेट अब कनेक्ट नहीं है।
उसी पृष्ठ पर उदाहरण दिखाता है कि यह कैसे करें। (1) लेकिन a post by Ian Griffiths कहता है कि मुझे सॉकेट से पढ़ना चाहिए, इसके माध्यम से भेजें।
Another post by Pete Duniho कहते हैं: ...
के बाद आप
Shutdown()
बुलाया गया है, कॉलReceive()
जब तक यह रिटर्न0
(दूरस्थ endpoint संभालने नहीं है वास्तव में, आप कुछ भी भेजने जा कि होगा जैसे ही रिमोट एंडपॉइंट को आपके सभी डेटा प्राप्त हुए हैं)। जब तक आप ऐसा नहीं करते हैं, तो आपके पास कोई आश्वासन नहीं है कि रिमोट एंडपॉइंट वास्तव में आपके द्वारा भेजे गए सभी डेटा को प्राप्त किया गया है, यहां तक कि सॉकेट का उपयोग करके भी भेजा गया है।
मैं वास्तव में Receive()
बुला कि दूरदराज के endpoint वास्तव में सभी डेटा मैं भेजा प्राप्त हुआ है सुनिश्चित करने के लिए के बारे में अपने बयान समझ में नहीं आता। (भेजने वाले बफर खाली होने तक सॉकेट ब्लॉक प्राप्त करते हैं?)
मैं प्रस्तावित विभिन्न विधियों से उलझन में हूं। क्या आप उन्हें समझा सकते हैं?
(1) मुझे आश्चर्य है कि क्यों Socket.Connected
संपत्ति के लिए example एक 1-बाइट सरणी आबंटित करता है, भले ही यह 0 लंबाई के साथ Send
कॉल? एक सॉकेट की
इस लिंक को चेक करें ... अंत में आप उस http://stackoverflow.com/questions/1387459/how-to-check-if-tcpclient-connection-is-closed – Operagust