Java套接字空闲?

时间:2018-07-02 11:10:15

标签: java websocket

这是我第一次使用套接字。约20分钟后,由于某种原因,没有任何错误/异常,套接字没有收到来自服务器的任何信息。我是在代码中犯了一个严重错误,还是错过了某种套接字空闲状态?我尝试使用基础知识。

executorService1.execute(new Runnable() {

        @Override
        public void run() {

            while (true) {
                System.out.println("Trying");
                String answer = null;

                try {
                    //answer = setInput(s).readLine();
                    input.ready();
                    answer = input.readLine();

                } catch (IOException e) {
                    e.printStackTrace();
                }


                if (answer == null) {
                    System.out.println("Starting to reconnect");
                    checkPrintQueue();

                    try {
                        s = new Socket(serverIpAddress, serverPort);
                        input = new BufferedReader(new InputStreamReader(s.getInputStream()));

                    } catch (IOException e) {
                        e.printStackTrace();
                    }



                } else if (answer.equals("print")) {
                    System.out.println("Printed");
                    checkPrintQueue();
                } else {
                    System.out.println("Testing");
                }
            }

        }

1 个答案:

答案 0 :(得分:-1)

在套接字的使用期限内,您需要使用相同的BufferedReader。否则,您可能会丢失数据。

NB readLine()返回null时,您必须关闭连接。您正在泄漏套接字。