2013-11-21 148 views
0

我在单个客户端和服务器之间有套接字连接。我已经实现了登录,注销,发送等功能,并在服务器端创建新用户,然后向服务器和客户端输出不同的消息。Java Socket的终止客户端连接

我需要在用户使用注销功能的同时仍然运行服务器端时实现连接关闭。我想到了一个System.exit(0)在客户端的正确位置能够做到这一点,但我实施它比我想象的更麻烦。

我试图把它放在我觉得我得到的输出从服务器返回,见下面的客户端,while循环中还有一个循环,如果寻找“退出”的回应:

客户:

   if(ins.readLine().contains("Logged Out")) 
       { 
        System.exit(0); 
       } 
       else 
       { 
        System.out.println(ins.readLine()); 
       } 

没有客户端服务器一切完美的while循环中,如果循环,但用如果循环出现,它需要一次命令,然后不再提示输入命令,并保持连接打开。在它不断提示用户输入命令并保持连接打开之前。

想法?

回答

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); 
} 
+0

完美答案!谢谢你的支持! – ZAX

相关问题