我有一个聊天,它有一个文件共享系统,我通过稍微修改monotorrent。
当用户共享文件时,客户端序列化Monotorrent.common.torrent对象(表示.torrent文件)并将其发送到另一个对象内的服务器,然后服务器对其进行反序列化。仅当用户共享的文件很小(大约小于1 MB)时才有效。当它的较大时,服务器给出以下例外:
二进制流'0'不包含有效的BinaryHeader。可能 原因是无效的流或对象版本之间的变化 序列化和反序列化。
这是我的反序列化代码:
public CommendData ByteArrayToCommendData(byte[] arrBytes)
{
using (MemoryStream memStream = new MemoryStream(arrBytes))
{
BinaryFormatter binForm = new BinaryFormatter();
memStream.Seek(0, SeekOrigin.Begin);
CommendData obj = (CommendData)binForm.Deserialize(memStream);
return obj;
}
}
(CommendData包含此实例中的Monotorrent.common.torrent对象)