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