我在单个客户端和服务器之间有一个套接字连接。我已经实现了登录,注销,发送等功能,并在服务器端创建新用户,然后向服务器和客户端输出不同的消息。
我需要在用户使用注销功能时实现连接关闭,同时仍然运行服务器端。我认为在客户端的正确位置System.exit(0)
能够做到这一点,但是我实现它的麻烦比我想象的要多。
我试图将它放在我认为我从服务器返回输出的位置,请参阅下面的客户端,在while循环中有一个if循环查找“已注销”响应:
客户端:
if(ins.readLine().contains("Logged Out"))
{
System.exit(0);
}
else
{
System.out.println(ins.readLine());
}
在客户端服务器的while循环中没有if循环,一切都运行良好,但是在那里使用if循环,它需要一次命令,然后不再提示命令,并保持连接打开。在它不断提示用户输入命令并保持连接打开之前。
思想?
答案 0 :(得分:1)
你读了两行而不是一行。在这里查看从服务器获得的内容:
if(ins.readLine().contains("Logged Out"))
另一个显示从服务器获得的内容:
System.out.println(ins.readLine());
要解决此问题,请将服务器响应存储在变量中:
String serverResponse = ins.readLine();
if (serverResponse.contains("Logged Out")) {
System.exit(0);
} else {
// reuse serverResponse instead of reading another line...
System.out.println(serverResponse);
}