【问题标题】:socket passing between processes进程之间的套接字传递
【发布时间】:2009-03-02 18:07:37
【问题描述】:

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

我发现此信息Shared Sockets,因此相信这是可能的。

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

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

[编辑] 最近我发现了这个关于这个问题的很好的样本。
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

【问题讨论】:

标签: sockets ipc tcp winsock


【解决方案1】:

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

有很多 IPC 方案。我可能会使用Boost::interprocess 的共享内存。但是,如果目标具有窗口 + 消息循环,则可以使用 SendMessage。或者剪贴板 API,就此而言(虽然有些奇怪)。机制由您选择。

【讨论】:

    【解决方案2】:

    如果您正在创建子进程,那么有些事情可能会为您完成。见

    http://www.tangentsoft.net/wskfaq/articles/passing-sockets.html (我知道这个在古代有效;不知道它是否适用于当前版本)

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

    -- MarkusQ

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      • 2014-09-22
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多