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 オブジェクトが含まれます)