1

コンピューター間で protobuf-net オブジェクトとファイルの両方を交換する必要があり、そのための最良の方法を見つけようとしています。次のオブジェクトがprotobufまたはファイルであることをAがBに通知する方法はありますか? または、ファイルが送信されたときに、ファイルが終了し、それに続く Byte[] が protobuf であることを知る方法はありますか?

C# 4.0、Visual Studio 2010 を使用

ありがとう、マニッシュ

4

1 に答える 1

1

これは、protobuf やファイルとは関係なく、通信プロトコル、特に「フレーミング」と関係があります。これは単純に、単一のストリームでサブメッセージをどのように区別するかを意味します。たとえば、これが raw ソケットの場合、(すべて) を送信することを選択できます。

  • 簡単なメッセージタイプ、おそらくバイト: ファイルの場合は 01、特定のファイルの protobuf メッセージの場合は 02
  • 長さのプレフィックス (通常は 4 バイトのネットワーク バイト順)
  • 前のバイト数で構成されるペイロード

次にすすぎ、メッセージごとに繰り返します。

あなたはあなたが求めている通信を述べていないので、より具体的にすることができます。

ところで、別のアプローチは、ファイルをバイト[]メンバーを持つprotobufメッセージとして扱うことです-主に小さなファイルに適していますが、

于 2012-05-20T11:53:32.553 に答える