0
我現在有一個反序列化通過TCP發送的對象的問題。通過TCP進行C#反序列化
反序列化的時候,我得到以下SerializationException(下面的代碼):
其他信息:二進制流 '0' 不包含有效 BinaryHeader。可能的原因是無效的流或對象版本 序列化和反序列化之間的變化。
序列化代碼:
public static void SerializeRO(Stream stream, ReplicableObject ro) {
MemoryStream serializedObjectStream = new MemoryStream();
Formatter.Serialize(serializedObjectStream, ro);
BinaryWriter bw = new BinaryWriter(stream);
bw.Write(serializedObjectStream.Length);
serializedObjectStream.WriteTo(stream);
serializedObjectStream.Close();
bw.Close();
}
反序列化代碼:
public static List<ReplicableObject> ParseStreamForObjects(Stream stream) {
List<ReplicableObject> result = new List<ReplicableObject>();
while (true) {
if (!(stream as NetworkStream).DataAvailable) break;
BinaryReader br = new BinaryReader(stream);
int length = br.ReadInt32();
byte[] bytes = br.ReadBytes(length);
MemoryStream ms = new MemoryStream(bytes);
ms.Position = 0;
// ERROR OCCURS ON THE LINE BELOW
result.Add((ReplicableObject) Formatter.Deserialize(ms));
ms.Close();
br.Close();
}
return result;
}
的對象是正在連載在運行時,所以我不認爲這是一個版本的問題。我是流媒體等新手,所以我可能錯過了一些明顯的東西。
我想建議我認爲它可能是什麼,但我真的卡住了。 :)
謝謝。
好景點+1 :) – leppie
謝謝SLaks。 – Xenoprimate