私は常にパケットのパッケージ化と受信に構造体を使用してきましたが、構造体をメイン パケット クラスから継承されたクラスに変換することで何か得られますか? パッケージ化のための別の「c++っぽい」方法と、これによるパフォーマンスの向上はありますか?
2 に答える
これは非常に一般的であり、さまざまな解決策が利用できる可能性があります。これはシリアライゼーションのトピックに関連しており、パケットに直接メモリにロードできる構造体が含まれているシリアライゼーションの単純なモデルであり、その逆も同様です。この場合、C と C++ は優れていると思います。なぜなら、struct のようなものを直接ストリームして簡単に読み取ることができるからです。他の言語では、バイト アラインメントを実装するか、オブジェクトをシリアル化してストリームに書き込めるようにする必要があります。
場合によっては、XML、SOAP などの文字列ストリームを読み取る必要があります。一部のアプリケーションでは、構造体を使用する必要があります。場合によっては、オブジェクトをストリームにシリアル化する必要があります。場合によります。しかし、構造体とポインターを使用することは、オブジェクトのシリアル化を使用することよりも優れていると思います。
あなたの場合、私が思うエンティティごとに2つの構造があります。ワイヤまたはファイルに沿って移動する構造体と、エンティティ インスタンスをメモリ内に保持するクラス。オブジェクトにバイナリ シリアル化を使用する場合は、インスタンスの送信、受信、および保持にクラスを使用できます。