Прочитать несколько строк без блокировки - PullRequest
0 голосов
/ 03 ноября 2019

Я работаю в SMTP-клиенте, в котором я определил SSLSocket и Scanner, связанные с inputStream этого сокета. Случай таков: если я использую команду HELO, возникает любая проблема, но если я использую EHLO, проблема появляется, когда я пытаюсь прочитать все команды inputStream. Программа все еще работает, но она ожидает чего-то от inputStream, которое не будет получено. Я подумал, что хорошей стратегией было бы использовать hasNextLine ().

SSLSocket s = (SSLSocket) ((SSLSocketFactory) SSLSocketFactory.getDefault())
                .createSocket(InetAddress.getByName(address), port);
Scanner entrada = new Scanner(s.getInputStream());
while (entrada.hasNextLine()) {
            respuesta = entrada.nextLine();
            System.out.println("S: " + respuesta);
        }

Так что я пытаюсь сделать, это прочитать все сообщения, которые сервер отправляет, как конвейерная обработка, аутентификация входа в систему, помощь ... Прежде чем я отправлю AUTH LOGIN, чтобы сделать программу более понятной. Я пытался использовать некоторое время с int var, например:

int i = 0;
while (i < 8) {
        respuesta = entrada.nextLine();
        System.out.println("S: " + respuesta);
        i++;
}

Но я обнаружил, что на некоторых SMTP-серверах вместо отправки 8 сообщений они отправляют 7, так что стратегия не работает для всехSMTP-серверы

...