同时关闭服务器和客户端套接字连接

问题描述:

我创建了一个客户端和服务器,使用套接字,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语句中输赢时,服务器关闭。当你说“完成”时你能举个例子吗?非常感谢。 –

摆脱ready()测试和重新编写你的循环是这样的:

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

ready()不能告诉你流的末尾。 isConnected()也没有。