zeromqの作成、ローカルのバインド、および他のクライアントメソッドのバインドについて。
インターネット上のzmq通信モードについては、3種類を含め、多くの紹介がありますが、詳しくは説明しません。
しかし、彼らが提供したデモは、サーバーサーバーとしてもクライアントクライアントとしてもローカルで作成されました。どちらもポートを5555に設定します。このようにして、ローカルはローカルに接続され、ローカルはローカルで制御されます。
クライアントとしてのローカル:
クライアントとして、情報を送信します。
import zmq
context = zmq.Context()
# Socket to talk to server
print("Connecting to hello world server…")
socket = context.socket(zmq.REQ)
socket.connect("tcp://localhost:5555")
socket.send_string(send_msg)
ローカルはサーバーとしても機能します。
サーバー側として、情報を受け入れます。
import zmq
context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("tcp://*:5555")
message = socket.recv_string()
注:REQ-REPモードはブロックしています。つまり、クライアントは最初にサーバーにメッセージを送信する必要があり、その後サーバーはクライアントに応答を返すことができます。シーケンスエラーがあると、エラーが発生します。
ローカルマシンがサーバーの場合、他のコンピューターやクライアントから送信されたメッセージキューを受信します。この時点で、tcpプロトコルのアドレスとしてローカルIPアドレスを使用するだけでよく、ローカルサーバーはこのアドレスとポートをバインドし、リモートクライアントもこのIPアドレスとウィンドウをリンクします。以下は、対応するPythonコードです。
PS:WindowsがIPアドレスを照会するためのコマンドラインは次のとおりです:ipconfig
MacまたはLinuxがIPアドレスを照会するためのコマンドラインは次のとおりです。ifconfig
サーバーとして機能するコンピューターのIPアドレスは192.168.3.41であることがわかりました。したがって、tcp設定を次のように変更すると、情報をリモートで送信し、ローカルで情報を受信するという目的を達成できます。ポートポートは、5000または5555のいずれかに任意に設定できます。
クライアントとして他のリモートコンピューター:
クライアントはサーバーのIPアドレスに接続されているため、connectが使用されます。
import zmq
context = zmq.Context()
# Socket to talk to server
print("Connecting to hello world server…")
socket = context.socket(zmq.REQ)
socket.connect("tcp://192.168.3.41:5000")
socket.send_string(send_msg)
サーバーとしてのローカル:
サーバーはこのIPアドレスとポート5000から情報を受信するため、サーバーにバインドされます。
import zmq
context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("tcp://192.168.3.41:5000")
message = socket.recv_string()