2016-11-22 1 views
0

Ich habe ein wenig Probleme beim Senden und Empfangen von Zeichenfolgen von Client zu Server. Angenommen, ich habe die Steckdosen richtig eingerichtet. Dies ist, was ich bin mit Server-Seite senden/empfangen:Fehler beim Senden/Empfangen von Zeichenfolgen für Client/Server

fromClient = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 
toClient = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream())); 

String clientInput; 
clientInput = fromClient.readLine(); 

ist, wie mein Server Eingaben von dem Client empfängt.

Client-Seite gleicher Deal:

toServer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); 
fromServer = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
inputLine = bufferedReader.readLine(); //inputLine reads from the console 
toServer.write(inputLine); 

ich eine Nachricht an den Sever senden kann, und es wird mich empfangen, aber wenn ich dieses Bit für den Client Kommentar-, um eine Antwort vom Server zu erhalten:

//  serverInput = fromServer.readLine(); 
// 
//  System.out.println(serverInput); 

Es hängt und die Server-Seite wird nicht die erste Nachricht gesendet erhalten. Ich habe keine Ahnung was falsch ist und ich möchte nur eine Antwort vom Server bekommen. Jede Hilfe wird geschätzt. Danke

+0

Haben Sie 'toClient.write (clientInput)' auf der Serverseite aufgerufen? –

+0

nach clientInput = fromClient.readLine();, ich drucke clientInput und es wird es drucken. Aber wenn ich "toClient.write" verwende ("bitte"); " nach und kommentieren Sie das Bit auf der Client-Seite aus, es wird hängen und nicht einmal die ursprüngliche Nachricht – ricefieldboy

+1

erhalten, vergiss .... Ich fand es heraus. Ich musste im Write-Parameter ein + '\ n' hinzufügen und danach einen Flush machen. – ricefieldboy

Antwort

0

BufferedReader.readLine() wird den Newline-Charakter für Sie strippen.

Das bedeutet, auf der Client-Seite inputLine hat keine nachlaufende \n, was bedeutet, dass der Client das Ende der Leitung Signal an den Server und umgekehrt nicht gesendet hat.

Client Side

toServer.write(...); 
toServer.newLine(); // <--- send new line 
toServer.flush(); // <--- flush buffered data 

Server sollte die ähnliche Sache tun.

Verwandte Themen