5

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

この情報Shared Socketsを見つけたので、それが可能であると信じています。

" WSADuplicateSocket 関数が導入され、プロセス間でソケットを共有できるようになりました"...

詳細 : Apache のソース コード (httpd-2.2.11-win32-src.zip) には、コメント付きの api WSADuplicateSocket の使用法があります。

[編集] 最近、この質問に関する素晴らしいサンプルを見つけました。
管理されていない世界で複製がどのように行われるか - ソケットの複製 - パート 1
管理されていないプロセスからソケットを転送することは可能ですか? - ソケット複製 - パート 2

4

2 に答える 2

4

WSADuplicateSocketの備考セクションを参照してください。Your Favorite Interprocess Communication Scheme を使用して、WSAPROTOCOL_INFO 構造体 (単なるデータです!) をターゲットに送信できることを効果的に示しています。

多くの IPC スキームがあります。おそらくBoost::interprocessで共有メモリを使用します。ただし、ターゲットにウィンドウ + メッセージ ループがある場合は、SendMessage を使用できます。または、Clipboard API についても同様です (やや奇妙ですが)。メカニズムはあなたの選択です。

于 2009-03-02T19:50:33.200 に答える
3

子プロセスを作成している場合、それを行う可能性のあることがいくつかあります。見る

http://www.tangentsoft.net/wskfaq/articles/passing-sockets.html (これは古代に機能したことは知っていますが、現在のバージョンで機能するかどうかはわかりません)

http://msdn.microsoft.com/en-us/library/ms682499.aspx

--MarkusQ

于 2009-03-02T18:33:34.337 に答える