我有以下代码:
import zmq
import time
context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind("tcp://*:5555")
while True:
time.sleep (1)
socket.send("Hello, World")
由于某种原因它似乎没有正确发送消息;我跑的时候
'netstat -anf inet'
在bash中,它返回以下内容:
Proto Recv-Q Send-Q Local Address Foreign Address (state)
...
tcp4 0 0 *.5555 *.* LISTEN
...
从谷歌搜索,看起来像“LISTEN”一直在右边意味着它实际上并没有正确绑定。 (当我关闭上面提到的python脚本时,整条线都消失了,并且没有其他提及5555.)任何想法在这里出了什么问题? 谢谢!
答案 0 :(得分:1)
如果您没有连接的具有有效订阅的SUB套接字,则不会有网络流量。订阅被PUB端过滤,因此如果您在呼叫send
时没有活动的订阅者,它就会丢弃该消息。如果添加订阅者,您应该会看到网络流量:
sub = context.socket(zmq.SUB)
sub.connect("tcp://127.0.0.1:5555")
sub.setsockopt(zmq.SUBSCRIBE, b'')