Как использовать транспорты inproc и ipc Zeromq?

Я новичок в ZERMQ. ZeroMQ имеет TCP, INPROC и IPC. Я ищу примеры с использованием python и inproc в Winx64 и python 2.7, которые также могут использоваться для Linux.

Кроме того, я искал методы UDP для транспорта и не нашел примеры.

Единственный пример, который я нашел, – это

import zmq import zhelpers context = zmq.Context() sink = context.socket(zmq.ROUTER) sink.bind("inproc://example") # First allow 0MQ to set the identity anonymous = context.socket(zmq.XREQ) anonymous.connect("inproc://example") anonymous.send("XREP uses a generated UUID") zhelpers.dump(sink) # Then set the identity ourself identified = context.socket(zmq.XREQ) identified.setsockopt(zmq.IDENTITY, "Hello") identified.connect("inproc://example") identified.send("XREP socket uses REQ's socket identity") zhelpers.dump(sink) 

Вариант использования, о котором я думаю, это: UDP, как распространение информации. Тестирование Push / Pull с использованием TCP выполняется быстрее или будет быстрее работать.

Вот пример теста> …………..

Сервер:

 import zmq import time context = zmq.Context() socket = context.socket(zmq.REP) socket.bind("inproc://example2") while True: # Wait for next request from client message = socket.recv() print "Received request: ", message # Do some 'work' time.sleep (1) # Do some 'work' # Send reply back to client socket.send("World") 

Клиент:

 import zmq context = zmq.Context() # Socket to talk to server print "Connecting to hello world server..." socket = context.socket(zmq.REQ) socket.connect ("inproc://example2") # Do 10 requests, waiting each time for a response for request in range (1,10): print "Sending request ", request,"..." socket.send ("Hello") # Get the reply. message = socket.recv() print "Received reply ", request, "[", message, "]" 

Ошибка Msg:

  socket.connect ("inproc://example2") File "socket.pyx", line 547, in zmq.core.socket.Socket.connect (zmq\core\socket.c:5347) zmq.core.error.ZMQError: Connection refused 

  • Восстановление из zmq.error.ZMQError: адрес уже используется
  • Установка pymatbridge на Windows
  • Не удается получить привязки python ZeroMQ для получения сообщений по IPC
  • Почему zeromq не работает на localhost?
  • Как использовать send_json с pyzmq PUB SUB
  • ZeroMQ push socket заставляет клиента не прерываться, когда процесс не прослушивается
  • Невозможно импортировать zmq в python (установить проблему)
  • Ошибка при установке ZeroMQ
  • 4 Solutions collect form web for “Как использовать транспорты inproc и ipc Zeromq?”

    Насколько я знаю, UDP не поддерживается 0MQ. Кроме того, IPC поддерживается только для ОС, которые имеют POSIX-совместимую реализацию именованных каналов; поэтому в Windows вы можете использовать только «inproc», TCP или PGM. Однако, помимо всего прочего, одна из основных функций 0MQ заключается в том, что ваш протокол является лишь частью адреса. Вы можете взять любой пример, изменить адрес сокета, и все должно по-прежнему работать нормально (субъект, конечно, по вышеупомянутым ограничениям). Кроме того, у ZGuide много примеров (большое количество которых доступно на Python ).

    Если ( и только если ) вы используете сокеты ZMQ_PUB или ZMQ_SUB, которые вы не делаете в приведенных вами примерах, где вы используете ROUTER, XREQ и т. Д., Вы можете использовать UDP или, точнее, многоадресную рассылку через UDP через

    "Epgm: // хост: порт"

    EPGM означает Encapsulated PGM , то есть PGM, инкапсулированный в UDP, который более совместим с существующей сетевой инфраструктурой, чем сырой PGM.

    См. Также http://api.zeromq.org/2-1:zmq-pgm

    Однако я не знаю никакой поддержки UDP для одноадресных сценариев.

    ZeroMQ поддерживает потоковую поддержку UDP по состоянию на март 2016 года:

    • Вы должны использовать шаблон Radio / Dish (очень похожий на Pub / Sub)
    • Поддерживается в libzmq и czmq
    • См. tests/test_udp.cpp , tests/test_radio_dish.cpp в исходном коде libzmq.
    • Полная разбивка, предоставленная Doron Somech на zeromq-dev @ list thread: Thread safe Pub / Sub и Multicast

    У меня была такая же проблема, когда моя версия pyzmq и zmq была более старой версией, я обновляю версию до 15.2.0, а затем разрешил проблему, префикс адреса ipc, который я использовал, – «inproc: //»,

    os: win7-x64 python: 2.7.6

    Python - лучший язык программирования в мире.