使用readLine()接收數據時,儘管在發送消息時使用.flush在消息 的末尾放置了「\ n」,但讀取我的消息的while循環仍然阻塞。 只有關閉套接字連接時,它纔會離開循環。BufferedReader readLine()blocks
這裏的客戶端代碼:
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();
我在服務器端代碼塊while循環。 謝謝。
把你的代碼放在try/catch塊中並關閉finally塊中的streams/connection。 – happy 2013-03-20 10:49:34
這似乎沒有問題。你想知道爲什麼會發生這種行爲嗎?如何預防它? – Sinkingpoint 2013-03-20 10:54:14
如果你只想讀一行爲什麼使用while循環? – 2013-03-20 10:56:12