Romper el bucle infinito que espera la entrada de la consola java

Tengo un código telnet en Java usando org.apache.commons.net.telnet.TelnetClient

Y estoy proporcionando información de inicio de sesión leyendo "login:" desde el servidor telnet a través del siguiente código,

    in = telnet.getInputStream();
    char lastChar = pattern.charAt(pattern.length()-1);
    StringBuffer sb = new StringBuffer();

    char ch = (char) in.read();
    while (true) {
       System.out.print(ch);
       sb.append(ch);
       if (ch == lastChar) {
         if (sb.toString().endsWith(pattern)) {
            return sb.toString();
         }
       }
       ch = (char) in.read();
       i++;
       // System.out.print(i);
    }

Pero cuando doy un servidor telnet no válido que solicita, por ejemplo, "nombre de usuario:", da como resultado un bucle infinito que espera "login:" en "in.read ();"

como espera en in.read (), no puedo usar ninguna bandera u otras en while (_flag) también. ¿Alguien puede proporcionarme una solución para evitar el bucle infinito cuando la aplicación recibe un inicio de sesión no válido?

Respuesta 1

Tiene un criterio de éxito (el servidor Telnet envía login:) pero no un criterio de error. Entonces el ciclo puede correr para siempre.

¿Qué debería pasar para romper el ciclo en caso de falla? Piensa en una condición. Tal vez: "intente durante 20 segundos" o " login:no se ha enviado dentro de los primeros 100 caracteres".

También podría leer línea por línea y esperar que la primera línea que envía el servidor (dentro de un cierto intervalo de tiempo) sea igual login:, de lo contrario salga con un mensaje de error (eso es lo que haría en su caso)

Respuesta: 2

Implemento un paquete 'apollo-android' y genero el archivo java 'FeedQuery' desde 'schema.json'. Pero no puedo importar ese archivo Java 'FeedQuery' a mi proyecto.

Hola, estoy tratando de obtener la clave extranjera para una tabla determinada, estoy usando este código: ResultSet rs = meta.getImportedKeys (_con.getCatalog (), null, _tableName); while (rs.next ()) {/ ...

Tengo este servlet de Java que sirve video, esto funciona bien en los navegadores de escritorio y Android, pero en el iPhone no se muestra el video. Aquí está mi código de servlet. Salida Salida de flujo; tratar (...

Recibo una excepción de puntero nulo en la línea donde setJavaScriptEnabled (true) se establece como verdadero. No obtuve la excepción cuando implementé el mismo programa que la única actividad en mi aplicación, ...