Ich versuche, einen Scanner eine Zeile zu lesen, senden Sie es sofort über einen printStream an einen Client, der es drucken und dann auf eine andere Zeile vom Server warten soll.Java PrintStream sofort zu outputStream mit Scanner und Schleife
Mein Client bleibt nach dem Drucken der ersten Nachricht hängen und gibt danach nur null zurück. Ich denke, ich sollte printStream.close() nicht in Server.java aufrufen, aber die Nachricht wird erst übertragen, wenn ich sie schließe. printSteam.flush scheint nichts zu tun.
Der entsprechende Code:
Server.java
ServerSocket serverSocket = new ServerSocket(1234);
Socket connectionSocket = serverSocket.accept();
OutputStream outputStream = connectionSocket.getOutputStream();
Scanner sc = new Scanner(System.in);
while(true) {
System.out.print("Pass me a message: ");
String input = sc.nextLine();
final PrintStream printStream = new PrintStream(outputStream);
printStream.print(input);
printStream.flush();
printStream.close();
}
Client.java
Socket connectionSocket = new Socket("localhost", 1234);
InputStream inputStream = connectionSocket.getInputStream();
String result = "";
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(inputStream));
while (true) {
result = inFromServer.readLine();
System.out.println("Message: "+result);
}
Vielen Dank für Ihre Hilfe!
Was ist 'outputStream'? – shmosel
Es ist ein normaler OutputSteam. Ich habe das Snippet aktualisiert. – JoJota