मेरे पास निम्न कोड है जो जावा में सॉकेट के माध्यम से एक पीओपी सर्वर से प्रतिक्रिया पढ़ता है। लेकिन समस्या कभी-कभी होती है, जब मैं सर्वर से पढ़ने के लिए readLine() फ़ंक्शन का उपयोग करता हूं और यदि सर्वर किसी भी प्रतिक्रिया के साथ उत्तर नहीं देता है, तो मेरा एप्लिकेशन वहां से लटका होगा, सर्वर से प्रतिक्रिया की प्रतीक्षा करेगा।पढ़ने के लिए टाइम-आउट सीमा निर्धारित करना()?
socket.connect(new InetSocketAddress("pop.server.com", 110), 3000);
input = socket.getInputStream();
BufferedReader incoming = new BufferedReader(new InputStreamReader(input));
incoming.readLine(); //This line will cause my application to hang if the server does not respond with a reply
वहाँ एक समय समाप्ति या कुछ अन्य तरीके कि जब सर्वर समय की एक निश्चित राशि के बाद जवाब नहीं देता है, आवेदन प्रतिक्रिया की प्रतीक्षा करने को रोकने और उसके अन्य निष्पादन जारी रखना चाहिए स्थापित करने के लिए कोई तरीका है?
यह कोशिश हालांकि पूरे लाइन पढ़ने पर समय-समाप्त नहीं करता है। क्या होगा यदि ग्राहक बाइट भेजता रहता है लेकिन लाइन को कभी समाप्त नहीं करता है ?? – grom
@grom यह एक जोखिम है। ग्राहक हमेशा आपको अंतहीन डेटा भेज सकता है जो स्मृति त्रुटि से बाहर निकलता है। यदि आपको कस्टम हैंडलिंग की आवश्यकता है तो आपको कोड स्वयं लिखना होगा। –
@grom आप लूप के दौरान अपने आप में पढ़ें() का उपयोग कर सकते हैं। वह विधि केवल एक चरित्र पढ़ती है। यदि आप इसे टाइमआउट के साथ जोड़ते हैं तो आप जो भी चाहते हैं उसे करने में सक्षम होना चाहिए। "कोड स्वयं लिखो" जैसा बिल्कुल नहीं है :) –