我有以下任務:ZeroMQ服務器如何保持與所有客戶端的連接?
客戶端連接到1端口上的服務器(例如8080)。服務器應記住它們,並在完成計算後將結果發送給客戶端。在該服務器獲取一些結果後,再次將其發送給所有客戶端。等等。
服務器如何與所有客戶端保持連接?
我有以下任務:ZeroMQ服務器如何保持與所有客戶端的連接?
客戶端連接到1端口上的服務器(例如8080)。服務器應記住它們,並在完成計算後將結果發送給客戶端。在該服務器獲取一些結果後,再次將其發送給所有客戶端。等等。
服務器如何與所有客戶端保持連接?
,我發現了一些代碼使用PUB \ SUB模型,並在此http://grokbase.com/t/zeromq/zeromq-dev/112q9934vg/nat-firewall-pub-sub-traversal與NAT的工作原理:
出版商連接,而不是結合:
import zmq
ctxt = zmq.Context()
pub = ctxt.socket(zmq.PUB)
pub.connect("tcp://127.0.0.1:2000")
while 1:
pub.send(os.urandom(5))
用戶結合,而不是連接:
import zmq
ctxt = zmq.Context()
sub = ctxt.socket(zmq.SUB)
sub.bind("tcp://127.0.0.1:2000")
while 1:
sub.rcv()
您是否確實需要維護來自客戶端的所有連接?我認爲,「發佈/訂閱」消息模型將滿足所描述的條件。服務器應該「發佈」結果,客戶端應該「訂閱」這個更新。這樣的「服務器」最簡單的例子,你可以zguide代碼樣本中發現:wuserver.cpp
我認爲PUP \ SUB模式,但我的服務器和客戶端可以在不同的坐網絡\後面的NAT。我認爲最健壯的解決方案是連接應該由客戶端發起。 – Alex
我沒有看到不同的網絡等問題,使用pub/sub時你只需要在連接到套接字時設置特殊的連接類型。所以從「健壯」的角度來看沒有變化。 –
你能提供更多關於「特殊連接類型」的信息嗎?我想我必須在所有有客戶端的網絡之間獲得PUB \ SUB代理。 – Alex