काम नहीं करता मैं एक SocketChannel
उपयोग करने के लिए और उसके पढ़ें/लिखें तरीकों के लिए समय समाप्त करना चाहते हैं। मैं सॉकेट कि मेरे SocketChannel
इस तरह का मालिक के लिए समय समाप्त स्थापित करने के लिए कोशिश की है:समय समाप्त
channel.socket().setSoTimeout(TIMEOUT);
लेकिन वह काम नहीं करता। क्या कोई अन्य समाधान है?
दुर्भाग्य से, सॉकेट चैनल सीधे सेटसोटाइम विधि का समर्थन नहीं करता है। इसका उपयोग करने से दुखी हो जाएगी। – casey
SocketChannel InterruptibleChannel इंटरफ़ेस लागू करता है, जिसका अर्थ है कि यदि आप अन्य धागा एक टाइमर सेट है कि और जब घड़ी समाप्त हो रहा है, यह धागा है, जिसमें अपने SocketChannel पढ़ बीच में हो सकता है, अपने पढ़ने() कॉल प्रवेश करने से पहले एक अलग थ्रेड बना सकते हैं() कॉल अवरुद्ध है। यदि रीड() कॉल पहले रिटर्न देता है, तो आप टाइमर थ्रेड को मार सकते हैं। –
@StevensMiller और चैनल बंद हो जाएगा, और पढ़ा जाएगा 'बंद ByInterruptException.' बहुत उपयोगी नहीं है। मुझे बताया गया कि लिनक्स के व्यवहार से यह विचित्र कार्यान्वयन अनिवार्य है। – EJP