Reutilizando el flujo de entrada de un socket

Me gustaría saber cómo mantener el flujo de entrada de un socket y reutilizarlo hasta que la aplicación esté cerca. Lo que hago por ahora es crear un hilo en el método principal. Se supone que este hilo seguirá ejecutándose todo el tiempo que se ejecute la aplicación. En este hilo, leo datos del servidor usando el flujo de entrada del socket. Pero solo puedo leer una vez lo que el servidor está enviando. Después de eso, creo que el hilo está muerto o no puedo leer desde la secuencia de entrada. ¿Cómo puedo hacer para que el flujo de entrada lea lo que viene del servidor? Gracias.

int length = readInt(input);


    byte[] msg = new byte[length];
    input.read(msg);
ByteArrayInputStream bs = new ByteArrayInputStream(msg);
            DataInputStream in = new DataInputStream(bs);
            int cmd = readInt(in);
switch(cmd) {
case 1: Msg msg = readMsg(cmd, msg);
}

Puse aquí todo, pero en mi código las cosas suceden de diferentes maneras.

El método readInt:

public static int readInt(InputStream in) throws IOException {
    int byte1 = in.read();
    int byte2 = in.read();
    int byte3 = in.read();
    int byte4 = in.read();
    if (byte4 == -1) {
        throw new EOFException();
    }
    return (byte4 << 24)
            + ((byte3 << 24) >>> 8)
            + ((byte2 << 24) >>> 16)
            + ((byte1 << 24) >>> 24);
}

Utilizado para la conversión little-endian.

Respuesta 1

su zócalo bien podría estar bloqueándose. Si encuentra este problema, una buena forma de evitarlo es diseñar su software para un método de sondeo en lugar de ser controlado por interrupción. Por otra parte, el patrón de diseño del software se realizará en torno a lo que está tratando de lograr.

¡Espero eso ayude! ¡Salud!

Respuesta: 2

Tengo el siguiente código soplar. Traté de encontrar una manera de evitar la fila if (something.isPresent ()) y declarar el algo opcional <Something> también. En cambio, me gustaría encadenar el Opcional ...

Estoy tratando de usar ImageIO.read para leer la imagen de inputstream en un entorno multiproceso. El siguiente es el código, entity = httpResponse.getEntity (); // httpResponse es apache hc response ...

Utilizo la clase Cookies de GWT para generar cookies. Cuando uso las siguientes Cookies.setCookie (LOGIN_COOKIE_NAME, valor, caduca); Todo funciona bien. Verificando la cookie en el navegador conduce ...

Tengo 2 proyectos, que se desarrollan utilizando PlayFramework 2.4. Aunque están completamente separados en concepto, comparten algunas características comunes, como la gestión de la evolución (Liquibase), CRUD ...