2013-12-18 28 views
0

我有以下代碼:的Python zeromq未成功發送的消息(netstat的-anf -inet其列爲LISTEN)

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") 

由於某種原因,它似乎沒有被正確地發送該消息;當我在bash運行

'netstat -anf inet' 

,它返回如下:

Proto Recv-Q Send-Q Local Address   Foreign Address  (state)  
... 
tcp4  0  0 *.5555     *.*     LISTEN 
... 

從周圍的Googling,它看起來像「LISTEN」右邊一路意味着它實際上沒有約束力正確。 (當我關閉上面提到的python腳本時,整條線消失了,並且沒有提及5555.)任何想法在這裏出了什麼問題? 謝謝!

+0

您能否顯示訂戶的代碼?似乎發行商代碼沒有問題。 – flyer

+0

** LISTEN **狀態表示'套接字正在偵聽'netstat'手冊頁中的傳入連接。 – flyer

回答

1

如果您沒有連接有活動訂閱的SUB套接字,將不會有網絡流量。訂閱被過濾PUB端,所以如果您在撥打send時沒有活動訂閱者的消息,它只會丟棄該消息。如果添加訂閱者,您應該會看到網絡流量:

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