【发布时间】:2022-11-27 06:10:13
【问题描述】:
正如标题,这里有两种绑定 zeromq 套接字的方法。
socket.bind("tcp://*:port")
socket.bind("tcp://127.0.0.1:port")
这两种方式都适合我,但我仍然对此感到好奇。
【问题讨论】:
-
回复是否回答了您的问题?
正如标题,这里有两种绑定 zeromq 套接字的方法。
socket.bind("tcp://*:port")
socket.bind("tcp://127.0.0.1:port")
这两种方式都适合我,但我仍然对此感到好奇。
【问题讨论】:
通常,服务器绑定到端点,客户端连接到端点,如下所示:
# 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 的不同机器时,你会注意到效果。因此使用"*"。
【讨论】:
要添加到 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 套接字连接,则它最有意义。其他套接字,可以根据情况选择(例如,如果有一台机器更明显地处于服务器角色,那将是绑定的机器)。
【讨论】: