【问题标题】:Does zeromq support IPC as a transport channel on windows?zeromq 是否支持 IPC 作为 Windows 上的传输通道?
【发布时间】:2013-03-01 10:27:05
【问题描述】:

当我在 Windows (Windows 8) 上尝试使用 python 的路由器示例时,我收到以下错误消息:

Traceback (most recent call last):
  File "router.py", line 43, in <module>
    client.bind("ipc://routing.ipc")
  File "socket.pyx", line 432, in zmq.core.socket.Socket.bind (zmq\core\socket.c:3870)
  File "checkrc.pxd", line 23, in zmq.core.checkrc._check_rc (zmq\core\socket.c:5712)
zmq.error.ZMQError: Protocol not supported

所以我认为 zeromq 的 IPC 传输通道在 Windows(至少 Windows 8)上不受支持。这是真的吗?

【问题讨论】:

  • 问题是 Windows 原生 IPC 方法不支持事件通知,因此无法与反应器集成。
  • @Steve-o:Windows 命名管道支持异步 I/O 并触发对 I/O 完成端口 (IOCP) 的完成通知。它们与前摄器(或反应器)框架很好地集成在一起。 Windows 的 ZeroMQ 实现可能使用 BSD(-ish) 套接字 API 而不是使用 IOCP,这将更好地解释为什么 ZeroMQ 不支持 Windows 上的 IPC 传输。

标签: python windows zeromq


【解决方案1】:

How to use Zeromq's inproc and ipc transports? 的问题提到 IPC 依赖于 POSIX 命名管道,而 Windows 不支持。

您应该能够在环回接口上使用 TCP 而不会遇到麻烦。

【讨论】:

  • 确实——问题变成了,你为什么要使用 IPC 而不是 TCP 呢?根据this 的说法,localhost 进程之间的 TCP 与 IPC 一样快!
【解决方案2】:

它在 Windows 上不受支持,但 TCP over localhost 在 Linux 和 OS/X 上提供与 IPC 大致相同的性能,我也会在 Windows 上使用它。

【讨论】:

    【解决方案3】:

    Win 10 现在支持 AF_UNIX,libzmq 已更新为支持 IPC。它被添加到 4.3.3 版本中。有关更多信息,请参阅pull

    【讨论】:

      猜你喜欢
      • 2011-12-29
      • 2019-10-07
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 2011-05-12
      • 1970-01-01
      相关资源
      最近更新 更多