2009-03-02 45 views
4

Windowsのプロセス間で(同じアドレス空間ではない)ソケットを渡す方法はありますか?
プロセス間でソケットの受け渡し

私はこの情報がShared Socketsであると考えているため、可能であると考えています。

はのWSADuplicateSocket関数は、プロセス間でソケットの共有を有効にするために導入された」

詳細情報...:アパッチのソースコードで(httpd-2.2.11-win32-src.zip)持っていますWSADuplicateSocketのAPIを使用してコメントを付ける。

[編集] 最近、この質問についてこの素晴らしいサンプルが見つかりました。
How duplication is done in the unmanaged world - Socket Duplication - Part 1
Is it possible to transfer sockets from unmanaged processes? - Socket Duplication - Part 2

+0

名前付きパイプを使用して、複数のクライアントプロセスから入出力をリダイレクトできます。共有ソケットではなく、かなり単純です。 http://msdn.microsoft.com/en-us/library/aa365590(VS.85).aspx – Chris

答えて

2

WSADuplicateSocketの解説を参照してください。

http://www.tangentsoft.net/wskfaq/articles/passing-sockets.html (ないアイデア、それは現在のバージョンで動作する場合、私はこの1つは古代過去に働いていたことを知っていません)を参照してください。 。これは効果的にあなたのお気に入りのプロセス間通信スキームを使用して、WSAPROTOCOL_INFO構造体(それは単なるデータです)をターゲットに送信できると言います。

多くのIPC方式があります。私はおそらくBoost::interprocessと共有メモリを使用するだろう。しかし、ターゲットにウィンドウ+メッセージループがある場合、SendMessageを使用できます。それともクリップボードAPIなのですか(それはやや奇妙ですが)。メカニズムはあなたの選択です。

関連する問題