【发布时间】:2015-08-13 16:45:25
【问题描述】:
之前有人问过这个问题,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 文档 here 和 here 中的示例:
# 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。知道我可能做错了什么吗?
【问题讨论】:
-
在套接字消息的内容中添加一个标识符(作为虚拟端口),以通过 UUID 识别每个不同的进程(例如)
-
谢谢。您能否更具体地了解套接字消息的内容?我刚开始使用 zmq,但我还在摸索。
-
嗯,我试图了解实际问题,是您的软件问题,即如何识别同一套接字上的不同客户端或网络问题,重新使用相同的套接字/端口连接?我的评论指的是第一种情况
-
我说的是第二种情况。
-
您似乎收到了发布者的错误,但您向我们展示了订阅者的代码。显示发布者的代码。
标签: python sockets port zeromq pyzmq