readLine() का उपयोग करते हुए डेटा प्राप्त करते समय, संदेश संदेश भेजने पर .flush का उपयोग करते हुए संदेश के अंत में "\ n" डालने के बावजूद, जबकि मेरे संदेश को पढ़ने के दौरान लूप जो अभी भी ब्लॉक करता है । सॉकेट कनेक्शन बंद करते समय, यह लूप छोड़ देता है।BufferedReader readLine() ब्लॉक
bos = new BufferedOutputStream(socket.
getOutputStream());
bis = new BufferedInputStream(socket.
getInputStream());
osw = new OutputStreamWriter(bos, "UTF-8");
osw.write(REG_CMD + "\n");
osw.flush();
isr = new InputStreamReader(bis, "UTF-8");
BufferedReader br = new BufferedReader(isr);
String response = "";
String line;
while((line = br.readLine()) != null){
response += line;
}
और सर्वर के कोड:
BufferedInputStream is;
BufferedOutputStream os;
is = new BufferedInputStream(connection.getInputStream());
os = new BufferedOutputStream(connection.getOutputStream());
isr = new InputStreamReader(is);
String query= "";
String line;
while((line = br.readLine()) != null){
query+= line;
}
String response = executeMyQuery(query);
osw = new OutputStreamWriter(os, "UTF-8");
osw.write(returnCode + "\n");
osw.flush();
मेरे सर्वर पर कोड ब्लॉक, जबकि पाश
यहाँ ग्राहक कोड है। धन्यवाद।
अपने कोड को कोशिश/पकड़ ब्लॉक में रखें और अंत में ब्लॉक में स्ट्रीम/कनेक्शन बंद करें। – happy
इसमें ऐसा कोई प्रतीत नहीं होता है। क्या आप जानना चाहते हैं कि यह व्यवहार क्यों होता है? इसे कैसे रोकें? – Sinkingpoint
यदि आप लूप के दौरान उपयोग करने के लिए केवल एक पंक्ति पढ़ना चाहते हैं? –