Java 从ByteBuffer读取对象时StreamCorruptedException
我正在使用JavaNIO数据报通道(在阻塞模式下)。我想把一个物体从一边传送到另一边。这是我在发送方所做的:Java 从ByteBuffer读取对象时StreamCorruptedException,java,object,streaming,bytebuffer,datagram,Java,Object,Streaming,Bytebuffer,Datagram,我正在使用JavaNIO数据报通道(在阻塞模式下)。我想把一个物体从一边传送到另一边。这是我在发送方所做的: ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(pkt); ByteBuffer buffer =
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