2017-11-11 226 views
0

我創建了一個客戶端和服務器,使用套接字,Hangman遊戲,客戶端將字母輸入發送到服務器等。當玩家贏或輸時,服務器終止。我希望客戶端在顯示「輸入字母:」之前同時終止。有沒有辦法做到這一點?同時關閉服務器和客戶端套接字連接

這裏是我的客戶端代碼的一部分:

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

服務器響應應該包含一個像「完成」和「繼續」的命令來控制客戶機行爲。關閉插座不夠快速和可靠。套接字狀態在客戶端的下一個讀/寫操作中被識別。 – Konrad

+0

@Konrad我的服務器正在經歷「while(true)」循環。當玩家在if/else語句中輸贏時,服務器關閉。當你說「完成」時你能舉個例子嗎?非常感謝。 –

回答

0

擺脫ready()測試和重新編寫你的循環是這樣的:

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

ready()不能告訴你流的末尾。 isConnected()也沒有。

相關問題