同时关闭服务器和客户端套接字连接
问题描述:
我创建了一个客户端和服务器,使用套接字,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());
答
摆脱ready()
测试和重新编写你的循环是这样的:
String line;
while ((line = SocketIn.readLine()) != null)
{
System.out.println(line);
}
ready()
不能告诉你流的末尾。 isConnected()
也没有。
服务器响应应该包含一个像“完成”和“继续”的命令来控制客户机行为。关闭插座不够快速和可靠。套接字状态在客户端的下一个读/写操作中被识别。 – Konrad
@Konrad我的服务器正在经历“while(true)”循环。当玩家在if/else语句中输赢时,服务器关闭。当你说“完成”时你能举个例子吗?非常感谢。 –