単一のサーバー プロセス A と複数のクライアント プロセスを作成する必要があります。データの受け渡しには、すべて Linux POSIX IPC メッセージ キューを使用する必要があります。メッセージは両方向に流れます。また、複数のクライアント プロセスがサーバー プロセス A に登録されている可能性もあります。
現在、サーバープロセスAによって作成および開かれ、クライアントプロセスによって(のみ)使用/開かれる名前付きメッセージキューを1つだけ使用しています。これは、2 つのプロセス シナリオ (つまり、1 つのサーバー プロセス A と 1 つのクライアント プロセス B) では機能しますが、複数のクライアント プロセスと 1 つのサーバー プロセスでは機能しません。
ここで直面している問題は、デザイン/ロジックにあります。サーバープロセスAでメッセージを他のクライアントプロセスから逆多重化し、サーバープロセスAから返信するにはどうすればよいですかそれぞれのクライアント プロセスでのみ処理されます。
たとえば、私は 1 つのシナリオを示しているだけです。プロセス A がメッセージ キュー X を作成したとします。プロセス B と C が起動し、メッセージ キュー X も開いています。プロセス B は要求メッセージをメッセージ キュー X に送信しますが、ここで問題はプロセス A とプロセス C の両方がエンキューで起動することです。イベント。ここで、プロセス C が Message が自分に属していないことをどのように理解するかを示します。
- IPC メッセージのサイズは小さく、128 バイト未満です。
- IPc メッセージは、整数とバイト配列を含む定義構造です。構造に double/float はありません。
- IPC メッセージ キューは NON_BLOCKING モードです。
- 高性能の義務はありません。
- 言語: C
- コンパイラ: GCC
- プラットフォーム/OS: Linux
- IPC メッセージ キュー: POSIX のみ。
- System V メッセージや Unix ローカル ソケット、パイプなどのような他の IPC メカニズムを使用することは想定していません。
さらに詳細が必要な場合はお知らせください。
この問題の解決策を教えてください。
参考までに: 私は既にデータベースを検索しましたが、同様の質問が既に尋ねられた/回答されていないので、重複としてマークする前に確認してください。同様の問題がすでに尋ねられ、回答されている場合は、リンクを提供してください。