0

私はしばらくこれに対する解決策を探していましたが、私が見つけたものはまったく一致しませんでした。C# にシリアライゼーション ライブラリが組み込まれていることは素晴らしいことですが、それは私が探しているものではありません。オブジェクトをシリアル化できるようにオブジェクトをシリアル化し、ヘッダー データをパケットに追加する必要があります。ID 番号、タイムスタンプ、オブジェクト タイプなどを入力し、送信先のプラットフォームを気にせずに送信できるようにします。言い換えると、キャスト先のオブジェクト タイプやヘッダー データの順序などの知識がなくても、C++ または Java でパケットをアンラップできるはずです。C# のバイナリ フォーマッタは、同じライブラリを使用して反対側で逆シリアル化されるように設計されているため、問題を引き起こします。また、対処する必要のない肥大化したパケットも作成します。

|========|========|=========|===|==============|

| | パケット ID | | データ型 | タイムスタンプ | 等 | シリアル化されたオブジェクト |

|========|========|=========|===|==============|

これを達成するために memcpy の行に沿って何かにアクセスできればいいのですが、オブジェクトのデータ型の順序が一致するように逆シリアル化される限り (はい、他の言語のデータ型のバイトサイズが同じであると仮定します) )、新しいプラットフォーム上のサーバーからデータを取得するのは簡単です(Android(Java)またはiPhone(obj.C)のデータを取得したいなど)。

4

1 に答える 1

3

私はGoogle のプロトコル バッファを効果的に使用しました。小さく、高速で、クロス プラットフォームであり、下位互換性があり、バイナリ形式にシリアル化されます。探しているカスタム ヘッダー情報はサポートされていませんが、独自のパケットをフレーム化できる場合は、必要に応じてカスタム ヘッダーをバイナリ ストリームに追加できます。Protobuf は、 C#、iOS、Java、および C++ にコンパイルできます。

于 2012-05-04T01:44:10.013 に答える