Beim Empfang von Daten mit readLine(), obwohl ich ein "\ n" am Ende der Nachricht mit der .flush beim Senden der Nachricht, die While-Schleife, die meine Nachricht liest immer noch blockiert . Nur beim Schließen der Socket-Verbindung verlässt es die Schleife.BufferedReader readLine() Blöcke
Hier ist der Client-Code:
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;
}
und den Code des Servers:
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();
Meine Codeblöcke auf dem Server while-Schleife. Danke.
Setzen Sie Ihren Code in try/catch Block und schließen Sie die Streams/Verbindung in endlich blockieren. – happy
Das scheint keine Frage zu haben. Möchten Sie wissen, warum dieses Verhalten auftritt? Wie man es verhindert? – Sinkingpoint
Wenn Sie nur eine Zeile lesen möchten, warum while loop verwenden? –