バイナリシリアル化オブジェクトを使用してデータストリームの読み取りまたは書き込みを行います。以前は、それらを書き込み/読み取りする場合は、「インスタンスクラス」をコンパイルしてDLLファイルにする必要があるため、それらの間に同じアセンブリがあります。
さて、ここに私の問題があります:
これは私のバイナリ送信者コードです
public void SendBinarySerial(object graph)
{
IFormatter formatter = new BinaryFormatter();
System.Net.Sockets.NetworkStream strm = mClient.GetStream(); //get TCPclient stream
formatter.Serialize(strm, graph);
}
これが私のバイナリレシーバーコードです:
private void doRead()
{
do
{
if (mClient.GetStream().CanRead)
{
System.Net.Sockets.NetworkStream strm = mClient.GetStream();
IFormatter formatter = new BinaryFormatter();
object mydat = (object)formatter.Deserialize(strm);//deserialize data receiver
}
} while (true);
}
そして、これは私がクライアント全体に送信したい私の「インスタンスクラス」コードです。ok次のコードを考えてみましょう。
[Serializable()]
public class DataSend
{
public List<Bitmap> MainData = new List<Bitmap>();
public List<string> Title = new List<string>();
}
ご覧のとおり、ビットマップや文字列など、いくつかのリスト変数があります。ビットマップデータは画像データ用です。多くの画像で埋めると、可変メモリのサイズが大きくなり、おそらく約20mbになります。
その後、私はそれらをクライアント全体に送信しようとしています。さて、ここに私の質問があります:
この手法を使用すると、サイズオブジェクトが約20 mbの場合、これはうまく機能しますか?SocketCommunicationにはデータ送信のサイズ制限があることを知っています
プロトコルをまったく定義したくありません。ソケット通信を使用したいだけですが、これは最善の方法ではないかもしれません。
御返答いただき有難うございます。