17

I get the following error message, when I try the router example wiht python on Windows (Windows 8):

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

So I suppose that the IPC transport channel for zeromq is not suported on Windows (at least Windows 8). Is this true?

Stephane Rolland
  • 38,876
  • 35
  • 121
  • 169
Klaus Rohe
  • 782
  • 2
  • 7
  • 11
  • 2
    The problem is that Windows native IPC methods do not support event notification thus cannot integrate with a reactor. – Steve-o Mar 13 '13 at 13:23
  • 4
    @Steve-o: Windows named pipes support asynchronous I/O and trigger completion notifications to I/O completion ports (IOCP). They integrate just fine with a proactor (or reactor) framework. The ZeroMQ implementation for Windows probably uses the BSD(-ish) socket API and rather than using an IOCP, which would be a better explanation as to why ZeroMQ doesn't support the IPC transport on Windows. – André Caron Dec 30 '13 at 04:42

3 Answers3

17

The question How to use Zeromq's inproc and ipc transports? mentions that IPC relies on POSIX named pipes, which Windows doesn't support.

You should be able to use TCP on a Loopback Interface instead without trouble.

Community
  • 1
  • 1
timotimo
  • 4,299
  • 19
  • 23
  • 1
    Indeed - the question becomes, why would you ever use IPC instead of TCP for anything? According to [this](http://stackoverflow.com/a/10875272/178757), TCP between localhost processes is just as fast as IPC anyway! – Jez Sep 19 '16 at 15:00
15

It is not supported on Windows, but TCP over localhost gives much the same performance as IPC, on Linux and OS/X and I'd just use that on Windows too.

Evgeniy Berezovsky
  • 18,571
  • 13
  • 82
  • 156
Pieter Hintjens
  • 6,599
  • 1
  • 24
  • 29
5

With Win 10 now supporting AF_UNIX libzmq was updated to support IPC. It was added to the 4.3.3 release. For more information see this pull