0

私はソケットプログラミングに取り組んでいます。クライアントは構造変数をサーバーに送信する必要があります。どうすればそれについて行くことができますか?サーバーとクライアントを作成しましたが、この時点で立ち往生しています。

PS: C でコーディングしています。

4

2 に答える 2

0

構造体のインスタンスを送信しようとしていると仮定すると、バイナリ データを送信するだけで済みます (構造体のサイズで構造体を記述します)。これは、構造体にポインターがなく、構造体の定義が両側で完全に一致していることを前提としています (ビット配置も同じです)。

これはあまり移植性がなく、かなりの数の仮定を行います。

より良いオプションは、データを標準形式にエンコードすることです。私は JSON が好きです。主な理由は、JSON がシンプルであり、JSON 用のパーサーがたくさんあるからです。構造体を JSON としてエンコードし (ライブラリについてはhttp://json.org/を参照)、ソケット経由で送信し、反対側でデコードします。

データの大きさも送信する必要があるため、単純なプロトコルを考え出す必要がある場合があります (最初の 4 バイトは JSON データのサイズで、次に JSON データを送信します)。

カスタム プロトコルはかなりひどいので、標準化されたプロトコルを検討することをお勧めします。TCP 経由でバイナリ データを送信するだけの場合は、WebSocket プロトコルを検討してください。それは基本的に私が説明したことですが、もう少し柔軟です。

これは私がしていることであり、かなりうまく機能します。

于 2012-11-16T19:53:29.607 に答える
0

クライアント側で書き込み、サーバー側で読み取りを使用しますか? もっと正確にする必要があると思います..常に同じデータ構造ですか?そうでない場合、どのメッセージを受信したかをどのように知ることができますか?

于 2012-11-16T19:45:48.710 に答える