有没有办法在Windows中的进程(不是相同的地址空间)之间传递套接字?
我发现此信息Shared Sockets,因此相信这是可能的。
“引入了WSADuplicateSocket函数以启用跨进程的套接字共享”......
更多信息:Apache的源代码(httpd-2.2.11-win32-src.zip)可以使用带有注释的api WSADuplicateSocket。
[编辑]
最近我找到了关于这个问题的很好的例子
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 :(得分:4)
请参阅WSADuplicateSocket的备注部分。它实际上表示您可以使用您最喜欢的进程间通信方案将WSAPROTOCOL_INFO结构(它只是数据!)发送到目标。
有很多IPC方案。我可能会使用共享内存Boost::interprocess。但是如果目标有一个窗口+消息循环,你可以使用SendMessage。或者剪贴板API,就此而言(虽然有点奇怪)。机制是你的选择。
答案 1 :(得分:3)
如果您正在创建子进程,则有些内容可能会为您执行此操作。参见
http://www.tangentsoft.net/wskfaq/articles/passing-sockets.html (我知道这个工作在古代过去;不知道它是否适用于当前版本)
http://msdn.microsoft.com/en-us/library/ms682499.aspx
- MarkusQ