2011-09-10 11 views
1

メッセージオブジェクトをバイナリデータストリーム(任意のstd :: streambufにすることができます)としてシリアル化し、別のプロセスに転送します。重要なのは、サーバーアプリケーションは多数のクライアントを処理しなければならず、接続は非同期でなければならない(複数のクライアントのため)、双方向であること(2つの別々の接続によって実装される可能性がある)。メッセージの長さは可変であり、キューに入れる必要があります。これに対してIPCのどの方法を選ぶべきですか?アプリケーションを通してストリームバッファを転送する簡単な方法はありますか?スピードは重要ではありませんが、あまりにも時間をかけてアプリケーションをブロックしないのが良いでしょう。何かがWindows(私はXPとより新しいを目指して)の下でローカルに行われ、ネットワークのサポートは必要ありません。Windowsのstreambufを介したC++ IPC

また、着信接続を聞く可能性も必要です。サーバーは自動的に新しい接続を検出し、互換性があれば、いくつかのハンドシェイクを行い、受け入れます。私は私が自分で言及したことの多くを書く必要があることを認識しています。とにかく、それは達成することが可能でなければならないが、もちろんより簡単である。

答えて

1

名前付きパイプは、Windowsで使用できます。 MSDN ref:http://msdn.microsoft.com/en-us/library/aa365150%28v=vs.85%29.aspx

また、全二重(双方向)および非同期に設定することもできます。 Windows上のFile I/O APIに精通している場合は、使用するのが簡単です。

+0

std :: fstreamを通してパイプを管理することは可能ですか? – Frizi

+0

番号std :: fstreamはC++標準に基づいていますが、名前付きパイプはOS固有の概念です。 MS APIを使用する必要があります。クロスプラットフォームのコードを主張するならば、IPCを強化しようとするかもしれません。 – Aarkan

+0

私はより具体的な情報が必要です。私は複数のクライアントが必要なので、私はそれぞれのパイプを作成する必要がありますか?どのように私はサーバーアプリケーションとの "ハンドシェイク"を作成できますか?ここでMSDNは明確ではありません。サーバーに接続する機能が必要です。サーバーに接続要求を自動的に検出してクライアントプールに追加する必要があります。 – Frizi

関連する問題