5

これは本当に基本的なことですが、私は今ブランキングしています。

デーモン プロセスがあり、複数のクライアントがデーモン プロセスと通信できるようにしたいと考えています。クライアントが起動してから、共有ライブラリを使用して、基本的にデーモンプロセスに「登録」できるようにしたいと考えています。デーモン プロセスは、この新しいクライアント用にスレッドを生成し、クライアントと新しいスレッド間の通信パイプを提供します。

すべてのクライアントが最初に使用する「登録チャネル」としてUNIXデータグラムソケットを考え、次にクライアント固有のチャネルに切り替えますが、アプリオリに設定せずに新しいデータグラムソケットに一意の名前を作成する方法を理解できません.

  • サーバーとクライアントは同じマシン上にあり、ストリームをパケットに分割する必要がないように、データグラム ソケットを使用することを好みます。
  • (非常に) 高速な小さなメッセージを送受信します。
4

2 に答える 2

2

基本的に、妥協して、ステージ1としてSOCK_STREAMソケット、ステージ2としてSOCK_DGRAMを使用する2ステージプロセスを用意する必要があると思います。したがって、次のようになります。

サーバ:

  1. SOCK_STREAMソケット「my.daemon.handshake」を作成します
  2. クライアントを受け入れる
  3. ランダムに生成された文字列XXXをクライアントに送信し、ソケットを閉じます
  4. SOCK_DGRAMソケット「my.daemon.XXX」を作成して処理を開始します
  5. (2)を繰り返す

クライアント

  1. ソケット「my.daemon.handshake」に接続します
  2. EOFに読み取ります-値XXXを取得します
  3. ソケット「my.daemon.XXX」でサーバーとの通信を開始します

  4. 利益!!!!

于 2012-12-05T00:50:15.890 に答える