2013-03-13 231 views
12

我收到以下错误消息,当我尝试室内用Windows上的Python(Windows 8中)路由器例如:zeromq是否支持IPC作为Windows上的传输通道?

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)。这是真的?

+2

问题是Windows原生IPC方法不支持事件通知,因此无法与反应器集成。 – 2013-03-13 13:23:23

+2

@ Steve-o:Windows命名管道支持异步I/O并触发I/O完成端口(IOCP)的完成通知。它们与proactor(或reactor)框架很好地结合在一起。 Windows的ZeroMQ实现可能使用BSD(-ish)套接字API,而不是使用IOCP,这将更好地解释为什么ZeroMQ不支持Windows上的IPC传输。 – 2013-12-30 04:42:51

回答

13

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

您应该可以在环回接口上使用TCP而不会造成麻烦。

+0

事实上 - 问题就变成了,为什么你会用IPC代替TCP做任何事情?根据[this](http://stackoverflow.com/a/10875272/178757),localhost进程之间的TCP与IPC一样快! – Jez 2016-09-19 15:00:47

11

它在Windows上不受支持,但在本地主机上的TCP与在Linux和OS/X上的IPC具有相同的性能,我也只是在Windows上使用它。

相关问题