【问题标题】:What is the deference bewteen zeromq binding with * and 127.0.0.1zeromq 绑定与 * 和 127.0.0.1 之间的区别是什么
【发布时间】:2022-11-27 06:10:13
【问题描述】:

正如标题,这里有两种绑定 zeromq 套接字的方法。

socket.bind("tcp://*:port")
socket.bind("tcp://127.0.0.1:port")

这两种方式都适合我,但我仍然对此感到好奇。

【问题讨论】:

  • 回复是否回答了您的问题?

标签: python zeromq pyzmq


【解决方案1】:

通常,服务器绑定到端点,客户端连接到端点,如下所示:

# 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 的不同机器时,你会注意到效果。因此使用"*"

【讨论】:

    【解决方案2】:

    要添加到 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 套接字连接,则它最有意义。其他套接字,可以根据情况选择(例如,如果有一台机器更明显地处于服务器角色,那将是绑定的机器)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 2018-01-01
      • 1970-01-01
      • 2011-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多