如何在网络连接中断时保持java客户机套接字的活动状态?

iyfamqjs  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(284)

当我的互联网连接中断几秒钟时,我经常不得不重新启动我的客户端应用程序。我是否必须在每次断开连接时创建新连接,或者是否有方法在“等待”重新建立连接时使客户端套接字保持活动状态?我不确定什么时候断开连接。当我们试图写回outputstream时,readline()可能会在断开连接后幸存吗?或者是“&&”!kksocket.isclosed()“检查冗余并关闭while循环?提前谢谢。

try {
        kkSocket = new Socket("12.345.67.899", 1234);
        out = new PrintWriter(kkSocket.getOutputStream(), true);
    } catch (IOException e) {
        e.printStackTrace();
        return;
    }

    try (
       BufferedReader in = new BufferedReader(
       new InputStreamReader(kkSocket.getInputStream()));
    ) {
        String fromServer;
        while ((fromServer = in.readLine()) != null && !kkSocket.isClosed()) {
            doSomething(fromServer);
            out.println("Back to server");
        }
    } catch (IOException e) {
        Thread.currentThread().interrupt();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
bzzcjhmw

bzzcjhmw1#

无法使客户端套接字“等待”重新建立连接。相反,您可以创建一个循环,在断开连接时重试连接到服务器,例如基于计时器(每x秒)。这样可以避免手动重新启动应用程序。请注意,您必须实现某种退出此重试循环的方法才能退出程序(例如:抛出一个键盘事件,在连续x次尝试失败后退出等等…)

相关问题