次のタスクがあります。
クライアントは、1 つのポート (8080 など) でサーバーに接続します。サーバーはそれらを覚えておく必要があり、計算が完了したら、結果をクライアントに送信する必要があります。そのサーバーが結果を取得した後、それをすべてのクライアントに何度も送信します。等々。
サーバーはどのようにしてすべてのクライアントとの接続を維持できますか?
次のタスクがあります。
クライアントは、1 つのポート (8080 など) でサーバーに接続します。サーバーはそれらを覚えておく必要があり、計算が完了したら、結果をクライアントに送信する必要があります。そのサーバーが結果を取得した後、それをすべてのクライアントに何度も送信します。等々。
サーバーはどのようにしてすべてのクライアントとの接続を維持できますか?
クライアントからのすべての接続を実際に維持する必要がありますか? 「パブリッシュ/サブスクライブ」メッセージングモデルは、説明されている条件を満たすと思います。サーバーは結果を「公開」し、クライアントはこの更新を「購読」する必要があります。このような「サーバー」の最も単純な例は、zguide コード サンプルで見つけることができます: wuserver.cpp
一部のコードが PUB\SUB モデルを使用し、NAT で動作することがわかりましたhttp://grokbase.com/t/zeromq/zeromq-dev/112q9934vg/nat-firewall-pub-sub-traversal :
バインドするのではなく、接続するパブリッシャー:
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()