2017-11-11 13 views
0

私は、ソケットと、クライアントがサーバーに文字入力を送信するHangmanゲームとを使用して、クライアントとサーバーを作成しました。プレーヤーが勝ったり敗北したりすると、サーバーは終了します。 「Enter letter:」を表示する前に、クライアントを同時に終了させたい。これを行う方法はありますか?サーバとクライアントのソケット接続を同時に閉じる

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

サーバーの応答には、クライアントの動作を制御するための "finished"や "continue"のようなコマンドが含まれている必要があります。ソケットを閉じることは、速くて信頼できるものではありません。ソケットの状態は、クライアントが次に読み書きする際に認識されます。 – Konrad

+0

@Konrad私のサーバーは「while(真)」ループを通過しています。プレーヤーはif/elseステートメントで勝敗するとサーバーは終了します。 「終了」と言ったときに例を挙げられますか?どうもありがとう。 –

答えて

0

ready()テストを取り除くと、このようなあなたのループを再コーディング:

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

ready()は、ストリームの終わりをご紹介することはできません。ここ

は私のクライアントコードの一部です。 。どちらも isConnected()です。

関連する問題