Время ожидания BufferedReader - PullRequest
0 голосов
/ 01 апреля 2020

Я читаю значения из модуля через BufferedReader.readline (). После того, как значения запрашиваются методом HTTP Get, выполняется функция sendAndReceive. Эта функция работает много раз (около 100 запросов GET). После этого успешного запроса я получаю SocketTimeoutExceptions из тайм-аута чтения. Он точно висит в позиции line = reader.readline (), а затем выдает исключение Read TimeOut

private synchronized String sendAndReceive(String s) {

    try {

        out.write(encrypt(s));
        out.flush();

        String line = "";
        String read = "";

        for (line = reader.readLine(); line != null; line = reader.readLine()) {
            if (!line.isEmpty()) {
                read += line;
                if (reader.ready() == false && !read.isEmpty()) {
                    break;
                }
            } else {
                break;
            }
        }
        return read;
    } catch (Exception e) {
        logger.error("Exception Send and received: {}", e.toString());
    }
    return null;
}

Я пробовал разные версии создания для l oop некоторое время l oop, закрывая Читатель, но ни один из этих методов не работает. Считыватель и сокет определены в другой функции и выполняются в начале программы.

socket = new Socket("myip", "myport");

socket.setSoTimeout(5000);

out = new DataOutputStream(
            socket.getOutputStream()
);

reader = new BufferedReader(
         new InputStreamReader(
                socket.getInputStream()
         )
);

Может быть, кто-то может помочь мне с моей проблемой. Большое спасибо!

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