gpt4 book ai didi

java - 从 ByteBuffer 读取对象时出现 StreamCorruptedException

转载 作者:行者123 更新时间:2023-12-02 07:26:26 27 4
gpt4 key购买 nike

我正在使用 java NIO 数据报 channel (阻塞模式)。我想将一个对象从一侧传输到另一侧。这就是我在发送方所做的事情:

          ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(pkt);
ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());
while(buffer.hasRemaining())
channel.write(buffer);

这里pkt是我要传输的ControlPacket类的对象。在接收方:

          ByteBuffer buffer = ByteBuffer.allocate(8192);
channel.receive(buffer);
buffer.flip();
ByteArrayInputStream bias = new ByteArrayInputStream(buffer.array(),0,buffer.limit());
ObjectInputStream ois = new ObjectInputStream(bias);
pkt = (ControlPacket)ois.readObject();

但是,我在运行代码时收到 java.io.StreamCorruptedException: invalid stream header: 00000094 错误。无法弄清楚代码中有什么问题。我的意思是,由于我在接收到缓冲区后翻转缓冲区,读取缓冲区的指针将重置为 0 位置,并且应该上升到最后一个字节所在的位置。

最佳答案

在写入缓冲区之前关闭 ObjectOutputStream。

关于java - 从 ByteBuffer 读取对象时出现 StreamCorruptedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13528042/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com