Я создаю приложение для видеочата, которое использует сеть Java (aka. Sockets) для отправки изображений с веб-камеры другому клиенту.
Мой код отправляет сначала длину буферизованных данных изображения, а затем фактические данные.,Сервер также читает сначала int, а затем сами данные.Первое изображение сработало, но после него поток ввода данных считал отрицательное число в качестве длины.
Сторона сервера:
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();
}
}
Сторона клиента:
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();
}
}