socket在进程之间传递

时间:2009-03-02 18:07:38

标签: sockets ipc tcp winsock

有没有办法在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

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