【问题标题】:Ending Client Connection of Java Socket结束 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 循环,它需要一次命令,然后不再提示输入命令,并保持连接打开。在它不断提示用户输入命令并保持连接打开之前。

想法?

【问题讨论】:

    标签: java sockets system.exit


    【解决方案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);  
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-13
      • 2012-06-18
      • 2016-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多