ゲームのスコアサーバーを実装する割り当てがあります。ゲームが完了すると、ゲームは登録のためにプレーヤーの名前(char * name)とスコア(intスコア)をサーバーに送信し、receive()し、サーバーは5つのトップスコアを送り返します。
BerkeleyソケットとCを使用します。例を読んで調べた後、単一の変数を送信するだけの例しか見つかりません。
write(sd, "Hello World", 12);
char buf[13];
read(sd, buf, 12);
buf[12] = '\0';
何をするのが普通ですか?各変数(名前とスコア)を別々のwrite()関数で送信しますか、それとも両方の変数を保持する構造体を作成しますか?
Beejのネットワークプログラミングガイドを読んだ後、考慮しなければならないバイト順序(ビッグ/リトルエンディアン)の問題に遭遇しました。これはセクション7.4シリアル化-データのパック方法に示されていますが、それ以外は問題ありません。すべてのサンプルコードパッケージで、それらはフロートし、単一の変数ですが、構造体全体をパックする方法はありますか?
クライアントとサーバーがどのように通信するかを説明するプロトコルの作成について説明するセクション7.5Soneof Data Encapsulationもあります。私にとって、これは構造体と私がやらないことのように見えますが、原則を示すコードはありません。
つまり、サーバーとクライアントの間に安定した通信を作成し、単一の変数以上のものを交換したいと考えています。