如何在zmq中的同一端口上处理多个发布者?

时间:2015-05-31 01:22:38

标签: python sockets port zeromq pyzmq

之前已经问过这个问题here。我有完全一样的问题。我想从一堆不同的进程发布,每次都使用相同的端口。

我尝试了答案中提供的解决方案,但这对我不起作用。我收到了错误

    File "/usr/local/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/usr/local/lib/python2.7/multiprocessing/process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "/home/akay/afk/multi.py", line 18, in to_zmq
    socket.connect("tcp://*:%s" % port)
  File "zmq/backend/cython/socket.pyx", line 478, in zmq.backend.cython.socket.Socket.connect (zmq/backend/cython/socket.c:4308)
ZMQError: Invalid argument

我的代码是这样的,基本上直接来自zmq docs herehere中的示例:

# Socket to talk to server
port = '5556'
context = zmq.Context()
socket = context.socket(zmq.SUB)
print "Listening for stream...", m
socket.bind("tcp://localhost:%s" % port) #change connect to bind, as per answer above
socket.setsockopt(zmq.SUBSCRIBE, topicfilter)

我使用的是python 2.7,以及zmq的最新版本。知道我可能做错了什么吗?

1 个答案:

答案 0 :(得分:3)

嗯,错误很明显:

    [...]
    socket.connect("tcp://*:%s" % port)
    [...]
ZMQError: Invalid argument

您无法连接*,您必须指定IP地址(服务器IP地址)。如果客户端和服务器都在一台计算机上运行,​​请尝试使用localhost127.0.0.1