2013-05-02 23 views
0

我想通過使用套接字通過ObjectOutputStream加載一個對象。ObjectOutputStream拋出java.io.StreamCorruptedException

我在同一臺機器上測試。

我收到此錯誤:

java.io.StreamCorruptedException: invalid type code: 00 
    at java.io.ObjectInputStream.readObject0(Unknown Source) 
    at java.io.ObjectInputStream.defaultReadFields(Unknown Source) 
    at java.io.ObjectInputStream.readSerialData(Unknown Source) 
    at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) 
    at java.io.ObjectInputStream.readObject0(Unknown Source) 
    at java.io.ObjectInputStream.readArray(Unknown Source) 
    at java.io.ObjectInputStream.readObject0(Unknown Source) 
    at java.io.ObjectInputStream.defaultReadFields(Unknown Source) 
    at java.io.ObjectInputStream.readSerialData(Unknown Source) 
    at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) 
    at java.io.ObjectInputStream.readObject0(Unknown Source) 
    at java.io.ObjectInputStream.readObject(Unknown Source) 

我用這個代碼來創建的ObjectOutputStream:

InputStream in = new ByteArrayInputStream(bytes); 
ObjectInputStream objectInputStream = new ObjectInputStream(in); 
Object readObject = objectInputStream.readObject(); 

更奇怪的是,有當我通過是沒那麼大的物體沒有probleam 。

我讀取的對象的大小(以字節爲單位返回probleam)約爲:73423字節。

我通過ObjectOutputStream傳遞一個java.util.Vector。

如果我傳遞的數量大於5,則會引發上述異常。

我還創建了一個簡單的測試(無需通過套接字)以確保Object是可序列化的,它的工作原理沒有問題。 NNTraining是我序列化類:

Vector<NNTraining> nn = new Vector<NNTraining>(); 
    ByteArrayOutputStream b = new ByteArrayOutputStream(); 
    ObjectOutputStream o = new ObjectOutputStream(b); 
    o.writeObject(nn); 
    o.close(); 
    ByteArrayInputStream bb = new ByteArrayInputStream(b.toByteArray()); 
    ObjectInputStream oo = new ObjectInputStream(bb); 
    Vector<NNTraining> v2 = (Vector<NNTraining>) oo.readObject(); 
+0

您可以添加包含從套接字讀取數據的代碼示例。 – 2013-05-02 20:47:09

回答

0

你不需要這一切使用字節數組和ByteArrayInputStreams鬼混在一起;只需將ObjectInputStream直接附加到套接字上,然後每次都要調用readObject()。在發送者處,將ObjectOutputStream直接附加到套接字上,並在每次需要時調用writeObject()。

你得到的問題是因爲你沒有這樣做。

+0

是的,這是這個問題。 – felipe 2013-05-03 16:26:11

相關問題