结束 Java Socket 的客户端连接
Posted
技术标签:
【中文标题】结束 Java Socket 的客户端连接【英文标题】:Ending Client Connection of Java Socket 【发布时间】:2013-12-05 07:00:00 【问题描述】:我在单个客户端和服务器之间有一个套接字连接。我已经在服务器端实现了登录、注销、发送和创建新用户等功能,然后向服务器和客户端输出不同的消息。
当用户使用注销功能同时服务器端仍在运行时,我需要实现连接关闭。我认为在客户端的正确位置使用System.exit(0)
可以做到这一点,但我在实现它时遇到的麻烦比我想象的要多。
我试图把它放在我认为我正在从服务器获取输出的地方,请参阅下面的客户端,在 while 循环内有一个 if 循环寻找“注销”响应:
客户:
if(ins.readLine().contains("Logged Out"))
System.exit(0);
else
System.out.println(ins.readLine());
如果客户端服务器的 while 循环中没有 if 循环,一切都可以正常工作,但是如果有 if 循环,它需要一次命令,然后不再提示输入命令,并保持连接打开。在它不断提示用户输入命令并保持连接打开之前。
想法?
【问题讨论】:
【参考方案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);
【讨论】:
以上是关于结束 Java Socket 的客户端连接的主要内容,如果未能解决你的问题,请参考以下文章