sendtoおよびrecvfrom関数を使用して winsock 経由でデータを交換していますが、それぞれの 2 番目のパラメーターはchar* bufです。MyStruct*のようなカスタム データを送信したいのですが、 void*で動作するこれらの関数の類似物が見つかりません。残念ながら、データを文字列形式で送信してから解析すると、遅くて効果がない可能性があります。それでも、プログラマーにそのような方法でデータを送信することを強制する強い理由があるのでしょうか? 状況に関する情報や提案は大歓迎です。前もって感謝します。
質問する
708 次
2 に答える
4
とにかく、ソケットが生のバイトで動作するchar*
かどうかは関係ありません。void*
バッファをキャストするだけ(char*)
です
于 2012-11-27T11:13:50.443 に答える
3
ポインターやハンドルが含まれてstruct
おらず、同じコンパイラーとコンパイル フラグを使用してレシーバーが作成されていて、移植性 (ビッグエンディアン アーキテクチャなど) を気にしない場合は、MyStruct*
tochar*
をキャストするだけで動作します。 .
それ以外の場合は、恐ろしい死に方をします。いいえ、真剣に。うまくいきません。ポインタとハンドルは別のマシンでは意味がありません。別のコンパイラまたはコンパイル フラグを使用すると、struct
レイアウトやパディングがわずかに異なり、役に立たなくなる可能性があります。
通常、ネットワークを介して構造を送信するには、ごくわずかな例外を除いて、シリアライゼーションが必要です。
于 2012-11-27T12:23:58.163 に答える