java.io.StreamCorruptedException: invalid stream header: 00000000

java.io.StreamCorruptedException: invalid stream header: 00000000

序列化时抛出此异常,原因是因为疏忽传入了一个空的缓冲,注意00000000,这是由于空的缓冲造成的。部分代码如下:

byte[] buffer = new byte[16384]; // 16k

DatagramPacket packet = new DatagramPacket(buffer, buffer.length);

while(true) {

mcastSocket.receive(packet);

ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(buffer));

// ...

}

修改后:

byte[] buffer = new byte[16384]; // 16k

DatagramPacket packet = new DatagramPacket(buffer, buffer.length);

while(true) {

mcastSocket.receive(packet);

ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(packet.getData()));

// ...

}