मेरे कुछ जावा एनआईओ कनेक्शन के लिए, जब मेरे पास SocketChannel.write(ByteBuffer)
कॉल है, तो यह IOException
फेंकता है: "टूटा हुआ पाइप"।जावा एनआईओ: IOException क्या करता है: टूटा हुआ पाइप मतलब है?
"टूटी हुई पाइप" का क्या कारण बनता है, और, सबसे महत्वपूर्ण बात यह है कि क्या उस राज्य से पुनर्प्राप्त करना संभव है? यदि इसे पुनर्प्राप्त नहीं किया जा सकता है, तो ऐसा लगता है कि यह एक अच्छा संकेत होगा कि एक अपरिवर्तनीय समस्या आई है और मुझे बस इस सॉकेट कनेक्शन को बंद करना चाहिए। क्या यह एक उचित धारणा है? क्या ऐसा कोई समय है जब यह IOException
होगा, जबकि सॉकेट कनेक्शन अभी भी पहले स्थान पर ठीक से जुड़ा हुआ है (किसी बिंदु पर असफल काम करने वाले कनेक्शन के बजाय)?
एक तरफ ध्यान दें पर, यह हमेशा एक SocketChannel.write()
प्रयास करने से पहले SocketChannel.isConnected()
कॉल करने के लिए, और यदि हां, मैं भी मान सकते हैं कि कनेक्शन "टूटा" है और बंद किया जाना चाहिए अगर दोनों SocketChannel.isConnected()
और SocketChannel.isConnectionPending()
दोनों false
हैं बुद्धिमान है?
धन्यवाद!
आप बिना किसी पाइप के टूटी हुई पाइप नहीं प्राप्त कर सकते हैं। कनेक्शन के पहले आपको असफल कनेक्शन नहीं मिल सकता है। इस उत्तर का अंतिम अनुच्छेद सही लेकिन अप्रासंगिक है। – EJP