5

有没有办法在 Windows 中的进程(不同的地址空间)之间传递套接字?

我找到了这个信息Shared Sockets,因此相信这是可能的。

"引入了 WSADuplicateSocket 函数来实现跨进程的套接字共享"...

更多信息:在 Apache 的源代码 (httpd-2.2.11-win32-src.zip) 中使用了带有注释的 api WSADuplicateSocket。

[编辑] 最近我发现这个关于这个问题的很好的样本。
在非托管世界中如何进行复制 - 套接字复制 - 第 1 部分
是否可以从非托管进程传输套接字?- 套接字复制 - 第 2 部分

4

2 回答 2

4

请参阅WSADuplicateSocket的备注部分。它有效地表明您可以使用您最喜欢的进程间通信方案将 WSAPROTOCOL_INFO 结构(它只是数据!)发送到目标。

有很多IPC方案。我可能会将共享内存与Boost::interprocess一起使用。但是如果目标有一个窗口+消息循环,你可以使用 SendMessage。或者剪贴板 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

——马库斯

于 2009-03-02T18:33:34.337 回答