使用 ZMQ pub/sub 向本地网络中的每台机器发送消息?

Sending messages to every machine in local network using ZMQ pub/sub?

我有 12 "node" 台嵌入式机器,我想从我的服务器机器向它们发送消息。我不知道他们的IP地址,他们也不知道我的。有什么方法可以 "broadcast" 通过本地网络发送 tcp 消息,以便他们都可以在某个端口上接收它?

到目前为止,我已经尝试了一个 pub/sub 连接,其中 12 个节点作为发布者,"server" 作为订阅者。我听说您可以使用 0.0.0.0 来监听所有传入的 IP 地址,并且您可以使用 * 向任何愿意收听的人广播。

#On the "server"
socket = context.socket(zmq.PUB)
socket.bind("tcp://*:{port}")

#On the "node"
socket = context.socket(zmq.SUB)
socket.connect("tcp://0.0.0.0:{port}") 

当发布者和订阅者是同一台机器时,这非常适合测试,但在不同机器上执行时会失败(消息并非永远不会收到)。我在这里做错了什么?会不会和我的防火墙有关?

[如果重要的话,我在 MacBook 和 Linux/ARM 节点上使用 python 2]

ZeroMQ Guide to Peer to Peer networking 使用原始 UDP 来发现对等点。您可能必须按照这些思路做一些事情。