2017-11-11 2 views
0

Ich habe einen Client und Server mit Sockets erstellt, Hangman-Spiel, wo der Client die Brief-Eingabe an den Server und so weiter sendet. Wenn der Spieler gewinnt oder verliert, wird der Server beendet. Ich möchte, dass der Client zur selben Zeit beendet wird, bevor "Enter letter:" angezeigt wird. Gibt es eine Möglichkeit, dies zu tun?Schließen Sie Server- und Client-Socket-Verbindung zur gleichen Zeit

Hier ist ein Teil meiner Kundennummer:

do { 
     System.out.println(); 
     System.out.print("Enter letter: "); 
     BufferedReader UserIn = new BufferedReader(new InputStreamReader(System.in)); 
     input = UserIn.readLine(); 
     pw.println(input); 
     System.out.println(SocketIn.readLine()); 
     System.out.println(); 

     while(SocketIn.ready()) { 
      System.out.println(SocketIn.readLine()); 
     } 

    } while (socket.isConnected()); 
+0

Die Serverantwort sollte einen Befehl wie "Fertig" und "Weiter" enthalten, um das Clientverhalten zu steuern. Das Schließen der Steckdose ist nicht schnell und zuverlässig genug. Der Socket-Status wird beim nächsten Lese-/Schreibvorgang vom Client erkannt. – Konrad

+0

@Konrad Mein Server durchläuft eine "while (true)" - Schleife. Der Server wird geschlossen, wenn der Spieler in einer if/else-Anweisung gewinnt oder verliert. Können Sie ein Beispiel geben, wenn Sie "fertig" sagen? Danke vielmals. –

Antwort

0

loswerden der ready() Test erhalten und Ihre Schleife wie folgt neu codieren:

String line; 
while ((line = SocketIn.readLine()) != null) 
{ 
    System.out.println(line); 
} 

ready() können Sie nicht über Ende des Streams sagen . Auch nicht isConnected().

Verwandte Themen