正如标题所示,这里有两种绑定zeromq套接字的方法。
socket.bind("tcp://*:port") socket.bind("tcp://127.0.0.1:port")
这两种方法对我都有效,但我仍然很好奇。
zaq34kh61#
一般而言,服务器系结至端点,而客户端则连接至端点,如下所示:
# Server socket = context.socket(zmq.REP) socket.bind("tcp://*:5555")
连接套接字:
# Client socket = context.socket(zmq.REQ) socket.connect("tcp://localhost:5555")
通过绑定到127.0.0.1,您可以将对服务器的请求限制为仅限127.0.0.1。在本地运行将很好。但是当您使用不同IP的不同机器时,您会注意到效果。因此使用"*"。
127.0.0.1
"*"
kqlmhetl2#
为了补充sitWolf的答案,请注意,您可以多次绑定一个套接字到多个协议。例如:
socket = context.socket(zmq.REQ); socket.bind("tcp://127.0.0.1:5555"); // Bind to localhost socket.bind("ipc:///tmp/mypipe"); // Also bind to a local pipe socket.bind("tcp://192.168.0.2:4444"); // Also bind to a specific NIC
另外,套接字类型与绑定或连接无关,尽管对于某些套接字类型,绑定是自然的,而连接是自然的。因此,如果绑定了PUB套接字,则相应的SUB套接字连接最有意义。其他套接字,可以根据情况选择(例如,如果有一台计算机更明显地处于服务器角色,则该计算机将是要绑定的计算机)。
2条答案
按热度按时间zaq34kh61#
一般而言,服务器系结至端点,而客户端则连接至端点,如下所示:
连接套接字:
通过绑定到
127.0.0.1
,您可以将对服务器的请求限制为仅限127.0.0.1
。在本地运行将很好。但是当您使用不同IP的不同机器时,您会注意到效果。因此使用"*"
。kqlmhetl2#
为了补充sitWolf的答案,请注意,您可以多次绑定一个套接字到多个协议。例如:
另外,套接字类型与绑定或连接无关,尽管对于某些套接字类型,绑定是自然的,而连接是自然的。因此,如果绑定了PUB套接字,则相应的SUB套接字连接最有意义。其他套接字,可以根据情况选择(例如,如果有一台计算机更明显地处于服务器角色,则该计算机将是要绑定的计算机)。