Сокет Java простаивает? - PullRequest
       10

Сокет Java простаивает?

0 голосов
/ 02 июля 2018

Это мой первый опыт использования сокета. По какой-то причине через ~ 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 голосов
/ 02 июля 2018

Вы должны использовать тот же BufferedReader для жизни сокета. В противном случае вы можете потерять данные.

NB Когда readLine() возвращает ноль, вы должны закрыть соединение. Вы протекаете сокеты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...