Durante la ricezione di dati tramite readLine(), anche se ho inserito un "\ n" alla fine del messaggio utilizzando .flush quando si invia il messaggio, il ciclo while che legge il messaggio continua a bloccare . Solo quando chiude la connessione socket, lascia il loop.BufferedReader readLine() blocca
Ecco il codice del client:
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;
}
e il codice del server:
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();
miei blocchi di codice al server mentre loop. Grazie.
Inserire il codice nel blocco try/catch e chiudere gli stream/connessioni nel blocco finally. – happy
Questo non sembra avere una domanda in esso. Vuoi sapere perché questo comportamento si verifica? Come prevenirlo? – Sinkingpoint
Se si desidera leggere solo una riga perché utilizzare il ciclo while? –