BufferedReader readLine () blocks

Cuando recibo datos usando readLine (), aunque puse un "\ n" al final del mensaje usando el .flush al enviar el mensaje, el bucle while que lee mi mensaje aún se bloquea. Sólo cuando se cierra la conexión del zócalo, se abandona el bucle.

Aquí está el código del cliente:

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;
}

y el código del servidor:

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();

Mi código se bloquea en el servidor mientras bucle. Gracias.

Respuestas a la pregunta(6)

Su respuesta a la pregunta