我正在尝试通过套接字发送图像,但遇到了一个奇怪的问题.. ImageIO.write 发送的数据多于 ImageIO.read 接收的数据。例如,如果我在循环中有以下代码:
(客户端)
out.writeByte(222);//magic num for testing
out.writeByte(blockSize);
out.writeByte(x / blockSize);
out.writeByte(y / blockSize);
ImageIO.write(part, "PNG", out);
(服务器端)
if (din.readUnsignedByte() != 222) {
throw new RuntimeException();
}
int partSize = din.readUnsignedByte();
int partX = partSize * din.readUnsignedByte();
int partY = partSize * din.readUnsignedByte();
BufferedImage part = ImageIO.read(din);
在第二次迭代中,幻数将失败,因为 ImageIO.read 尚未读取从另一端发送的所有数据。为什么是这样?这似乎是一个重大问题。还是我错过了什么?
编辑:截至 2008 年 4 月 14 日,这似乎是一个已确认的错误。错误号 6687964。为什么这还没有解决?...啊。