El flujo de salida de entrada de la aplicación de chat de video Java no funciona

Estoy creando una aplicación de video chat que utiliza redes java (también conocidas como sockets) para enviar imágenes de la cámara web a otro cliente.

Mi código envía primero la longitud de los datos de la imagen almacenada y luego los datos reales. El servidor también lee primero un int y luego los datos en sí. La primera imagen funcionó, pero después, el flujo de entrada de datos leyó un número negativo como la longitud.

Lado del servidor:

frame = new JFrame();
        while (true) {
            try {

                length = input.readInt();
                System.out.println(length);
                imgbytes = new byte[length];
                input.read(imgbytes);
                imginput = new ByteArrayInputStream(imgbytes);
                img = ImageIO.read(imginput);
                frame.getContentPane().add(new JLabel(new ImageIcon(img)));
                frame.pack();
                frame.setVisible(true);

            }
            catch(IOException e){
            e.printStackTrace();
            }
        }

Lado del cliente:

while(true) {
            try {

                    currentimg = webcam.getImage();
                    ImageIO.write(currentimg, "jpg", imgoutputstream);
                    imgbytes = imgoutputstream.toByteArray();
                    out.writeInt(imgbytes.length);
                    out.write(imgbytes);

            } catch (IOException e) {
                e.printStackTrace();
            }
        }
Respuesta 1

Tengo una ArrayList de cadenas que necesito modificar. Cuando los agrego a la lista se ven así. tick.add ("CAST.ST"); tick.add ("ELUX-B.ST"); tick.add ("EKTA-B.ST"); Entonces tengo un método para ...

Descubrí que podemos leer el código fuente del software de un archivo JAR usando el software de descompilación. Descargué dicho software y leí muchos de esos códigos. Mis preguntas son ... ¿Cómo podemos prevenir ...

Estoy realmente confundido acerca de cuáles son exactamente las diferencias entre el elemento Kth más pequeño y el elemento Kth. Kth element = kth element es un array = array [k-1] pero, ¿cuál es el kth elemento más pequeño? Tengo un ...

Intentando escribir este script que funciona con entradas que a menudo llegan a cientos de miles de millones. Sin embargo, Math.ceil no se redondeará hacia arriba? int clayturns = (int) Math.ceil (clayneeded / 7500000000L); ...