メッセージを送信するときに.flushを使用してメッセージの末尾に「\ n」を入れても、メッセージを読み込むwhileループがブロックされます。 ソケット接続を閉じるときのみ、ループを終了します。 whileループBufferedReader readLine()ブロック
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();
サーバーで私のコードブロック:
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;
}
とサーバーのコード:ここで
は、クライアントコードです。おかげさまで
try/catchブロックにコードを入れ、finallyブロックでストリーム/接続を閉じます。 – happy
これには疑問がないようです。この現象がなぜ発生するのか知りたいですか?それを防ぐ方法は? – Sinkingpoint
whileループを使用する理由を1行だけ読みたい場合は? –