我有一个聊天室,它有一个文件共享系统,我通过稍微修改 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 对象)