Ich stecke fest, um weiterzukommen. Diese while-Schleife scheint zu hängen, wenn Zeilen von einem Socket empfangen werden.Java, Probleme mit BufferedReader in einer While-Schleife
Hier ist die Server-Seite des Codes:
out = new PrintWriter(socketcliente.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socketcliente.getInputStream()));
//receive and shows client data
linea = 0;
while ((buffer[linea] = in.readLine()) != null) {
System.out.println(buffer[linea]);
linea = linea+1;
}
//asks for a command and sends it to client
System.out.println("Enter remote command");
while ((input = scanner.nextLine()) != null) {
out.println(input);
}
und hier ist die Client-Seite:
out = new PrintWriter(socketcliente.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socketcliente.getInputStream()));
//sends a limited amount of lines to the server
linea = 0;
while (buffer[linea] != null) {
out.println(buffer[linea]);
linea = linea+1;
}
//receive the command from server, executes and save output for sending to the server
while ((comandor = in.readLine()) != null) {
proceso = Runtime.getRuntime().exec(comandor);
pinput = new BufferedReader(new InputStreamReader(proceso.getInputStream()));
buffer = new String[100];
linea = 0;
while ((psalida = pinput.readLine()) != null) {
buffer[linea] = psalida;
linea = linea+1;
}
}
Nachdem der Server druckt die Daten, die er empfängt, es tut nichts, noch die while-Schleife verlassen . Muss Daten an den Client senden. Ich verwende PrintWriter und BufferedReader.
Bearbeitet: Vollständigeren Code zu verstehen, was ich versuche. Die Ausführung des Befehls und der Ausgabe läuft gut, das Problem besteht darin, die Daten auf dem Server zu empfangen, alle Daten zu erhalten, aber am Ende zu stoppen und die erste while-Schleife nicht zu verlassen. Wie kann ich zulassen, dass die Schleife verlassen wird? Ich habe versucht, nach der Nachricht einen Null-Byte von dem Client sendet, oder ein „quit Text“, dass der Server wie verstehen:
while ((buffer[linea] = in.readLine()) != null && (buffer[linea] = in.readLine()) != "quit")
Ich bin verloren und konnte nicht gefunden werden, wie zu tun.
Alle diese sind in Versuch Aussagen. Nichts funktioniert. Ich bin ein Anfänger, danke für deine Hilfe.
Der Leser wird nicht null zurück, bis die Buchse schließen. – matt
Ihr Code scheint im Allgemeinen sehr fehleranfällig zu sein. Wir wissen nicht, was Sie erreichen wollen. Wie Puffer = neuer String [100]; kann einen Überlauf verursachen, wenn Sie nicht auf 100 Zeilen beschränkt sind. – vladaman