Python zeromq没有成功发送消息(netstat -anf -inet将其列为LISTEN)

时间:2013-12-18 05:08:34

标签: python sockets tcp zeromq

我有以下代码:

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.)任何想法在这里出了什么问题? 谢谢!

1 个答案:

答案 0 :(得分:1)

如果您没有连接的具有有效订阅的SUB套接字,则不会有网络流量。订阅被PUB端过滤,因此如果您在呼叫send时没有活动的订阅者,它就会丢弃该消息。如果添加订阅者,您应该会看到网络流量:

sub = context.socket(zmq.SUB)
sub.connect("tcp://127.0.0.1:5555")
sub.setsockopt(zmq.SUBSCRIBE, b'')