2017-08-28 77 views
0

有沒有辦法看到連接後ZeroMQ(實際上是pyzmq)端口連接到哪個端口?
例如...ZeroMQ:如何找到PAIR套接字使用哪個端口?

import zmq 
context = zmq.Context() 
socket = context.socket(zmq.PAIR) 
port = socket.bind_to_random_port("tcp://*") 
# some other code that might change that binding 
actual_port = socket.which_port???() # (this is what I want) 

不能在文件或其他論壇上找到。會幫我節省一些調試時間!

```

+1

你可以用'sock.get(zmq.FD)'得到底層的FD,然後使用標準的'getsockname'和'getpeername'函數? – o11c

+0

@ o11c這聽起來像一個很好的方向,但我仍然不知道如何做到這一點? 'pyzmq'似乎缺少'getsockname',它會告訴端口,或者我無法找到它? –

+0

「標準」,我的意思是它在'套接字'模塊。你必須首先調用'socket.fromfd'來得到一個(內部'dup''ed,所以你不必擔心它會在你之下關閉)'socket'對象,這需要傳遞這個家族(AF_INET '或'AF_INET6' - 不知道默認的zmq是什麼)並鍵入('SOCK_STREAM'爲'tcp://')。 – o11c

回答

0

.bind_to_random_port()方法會自動選擇一個端口綁定到與返回將包含它綁定過的端口。回報是int

相關問題