यहां दुर्घटना को रोकने के लिए सबसे अच्छा अभ्यास क्या है?
हर किसी के अनुसार या तो सिगाइप्स को अक्षम करें, या त्रुटि को पकड़ें और अनदेखा करें।
क्या यह जांचने का कोई तरीका है कि क्या लाइन का दूसरा हिस्सा अभी भी पढ़ रहा है?
हां, चयन () का उपयोग करें।
चयन () यहां काम नहीं करता है क्योंकि यह हमेशा कहता है कि सॉकेट लिखने योग्य है।
आपको रीड बिट्स पर चयन करना होगा । आप शायद लेखन बिट्स को अनदेखा कर सकते हैं ।
जब दूर का छोर अपने फ़ाइल हैंडल को बंद कर देता है, तो चयन आपको बताएगा कि पढ़ने के लिए डेटा तैयार है। जब आप जाते हैं और पढ़ते हैं, तो आपको 0 बाइट्स मिलेंगे, जो कि ओएस आपको बताता है कि फ़ाइल हैंडल बंद कर दिया गया है।
केवल एक बार जब आप बड़े बिट्स भेज रहे हैं, तो आप लिखने की उपेक्षा नहीं कर सकते हैं, और दूसरे छोर पर बैकलॉग होने का खतरा है, जो आपके बफ़र्स को भरने का कारण बन सकता है। यदि ऐसा होता है, तो फ़ाइल हैंडल पर लिखने की कोशिश करने से आपका प्रोग्राम / थ्रेड ब्लॉक या विफल हो सकता है। लिखने से पहले चयन का परीक्षण आपको इससे बचाएगा, लेकिन यह गारंटी नहीं देता कि दूसरा छोर स्वस्थ है या आपका डेटा आने वाला है।
ध्यान दें कि आप पास से एक सिगिपिप प्राप्त कर सकते हैं (), साथ ही साथ जब आप लिखते हैं।
किसी भी बफ़र किए गए डेटा को बंद कर देता है। यदि दूसरा छोर पहले से ही बंद हो गया है, तो बंद विफल हो जाएगा, और आपको एक सिगिपिप प्राप्त होगा।
यदि आप बफ़र्ड TCPIP का उपयोग कर रहे हैं, तो एक सफल लेखन का अर्थ है कि आपके डेटा को भेजने के लिए कतारबद्ध किया गया है, इसका मतलब यह नहीं है कि इसे भेजा गया है। जब तक आप सफलतापूर्वक कॉल बंद नहीं करते, तब तक आप नहीं जानते कि आपका डेटा भेजा जा चुका है।
सिगिप्प आपको बताता है कि कुछ गलत हो गया है, यह आपको नहीं बताता है कि आपको इसके बारे में क्या करना चाहिए या क्या करना चाहिए।