2013-03-13 1 views
12

私は、Windows(Windows 8の)上のpython wihtルータの例をしようとしたとき、私は、次のエラーメッセージが表示されます:zeromqはウィンドウ上のトランスポートチャネルとしてIPCをサポートしていますか?

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 

だから私は、少なくともWindowsの(zeromq用IPCトランスポートチャネルは、Windows上でsuportedされていないと仮定8)。これは本当ですか?

+2

問題は、WindowsネイティブのIPCメソッドがイベント通知をサポートしていないため、リアクタと統合できないことです。 –

+2

@ Steve-o:Windows名前付きパイプは非同期I/Oをサポートし、I/O完了ポート(IOCP)に対する完了通知をトリガーします。それらは、プロクタ(またはリアクタ)フレームワークとうまく統合されています。 Windows用のZeroMQ実装では、おそらくBSCP(-ish)ソケットAPIを使用し、IOCPを使用するのではなく、ZeroMQがWindows上でIPC転送をサポートしない理由についてのより良い説明となります。 –

答えて

13

質問How to use Zeromq's inproc and ipc transports?は、IPCがWindowsがサポートしていないPOSIX名前付きパイプに依存していると言います。

ループバックインターフェイスでTCPを問題なく使用できるはずです。

+0

確かに、何のためにTCPの代わりにIPCを使用するのですか? [this](http://stackoverflow.com/a/10875272/178757)によると、localhostプロセス間のTCPは、とにかくIPCと同じくらい速いです! – Jez

11

これはWindowsではサポートされていませんが、localhostのTCPはLinuxやOS/XのIPCと同じパフォーマンスを提供します。

関連する問題