繁体   English   中英

zeromq 绑定与 * 和 127.0.0.1 之间的区别是什么

[英]What is the deference bewteen zeromq binding with * and 127.0.0.1

正如标题,这里有两种绑定 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 套接字连接,则它最有意义。 其他的sockets,可以根据情况选择(比如如果有一台机器更明显是服务器角色,就绑定那台)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM