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

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

"引入了 WSADuplicateSocket 函数以启用跨进程的套接字共享"...

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

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

#1楼 票数:4

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

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

#2楼 票数:3

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

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

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

——马库斯Q

  ask by lsalamon translate from so

未解决问题?本站智能推荐:

4回复

Winsock C TCP套接字

我之前在Python中使用过TCP套接字。 它在C中看起来非常相似但我无法获得任何工作。 socket(AF_INET, SOCK_STREAM, 0); 返回-1,这当然表示错误。 我怎么会这么快走错路? 如果你可以帮我解决这个问题,那就太好了,但如果你能给我一些简单的,简单的骨头源代
1回复

正常关闭TCP套接字

我正在用C ++写一个IRC客户端,目前遇到一个问题,退出时我会这样做: 但是,问题是没有发送QUIT消息。 我已经嗅探了来自客户端的数据包,实际上该消息从未发送过。 我认为这是套接字未刷新的问题,但我不知道如何执行此操作,Google建议禁用Nagle的算法,但我怀疑这是一种好习惯
1回复

是否可以在不发送RST的情况下异常中止套接字?

我有一个要中止关闭的已连接套接字,但是我不希望将RST发送到另一端。 能做到吗?
1回复

如何查询通过套接字传输的字节数

我有一台使用TCP套接字的服务器,要获取在此套接字中发送/接收的字节数,我可以计算使用该特定套接字发送或接收的字节数,但是如果我使用TransmitPackets之类的函数,那么我将无法获取数字通过该特定套接字发送/接收的字节数。 有什么办法可以从套接字获取此信息?
1回复

套接字连接到本地主机失败。错误代码:10061

当我在浏览器中键入localhost时,我无法成功连接。 我该如何解决?
1回复

处理在不同线程中读取的 TCP Socket 数据

我正在开发一个程序来与一个设备集成,该设备每 70 毫秒通过 TCP 通道发送一次数据。 我正在使用 Socket.BeginReceive 和 Socket.EndReceive 方法来读取数据。 逻辑在以下伪代码中描述 上述代码中描述的流程函数负责实现业务逻辑。 处理函数目前需要大约 30
1回复

Winsock客户端套接字-阻止防火墙中的动态端口

考虑服务器套接字和客户端套接字。 服务器套接字端点由一对(IP / Ws.Xs.Ys.Zs ,TCP port / Ps )标识。 当客户端套接字启动与服务器套接字的连接时,客户端端Wc.Xc.Yc.Zc与该对关联(IP / Wc.Xc.Yc.Zc ,TCP Port / P
1回复

我需要关闭插座吗?

使用Winsock通过套接字发送数据后,您应该关闭连接,如下所示: 我正在编写一个通过套接字发送数据的API。 如果我之后必须关闭套接字,我需要向API添加一个函数,以便用户可以说明他们何时完成数据获取。 如果我不关闭插座,是否有问题?