0
我正在使用java NIO數據報通道(處於阻塞模式)。我想從一側傳遞一個對象到另一側。這是我在發送端做:從ByteBuffer讀取對象時StreamCorruptedException
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位置,並且應該上升到最後一個字節的位置。