你能在ZeroMQ中得到发布者和订阅者的identity/address吗?

Can you get the identity/address of the publisher and subscriber in ZeroMQ?

我一直在阅读文档,但似乎找不到关于我的查询的任何信息。

我只需要发布者和订阅者的 IP 地址进行跟踪,这样我就可以将它们显示为我的程序的输出。

假设我有一个网络,其中我的发布者和订阅者连接在一起,发布者是否可以确定每个订阅者的 IP 地址,反之亦然?

所以我可以有这样的东西:

Publisher of topic "foo":
 192.168.1.1
Subscribers of topic "foo":
 192.168.1.2
 192.168.1.3

[+1] 为您的励志格言:“我们死去的那一天就是我们停止学习的那一天 "

can have something like this: ?

嗯,
是也不是:

虽然 API v4.2+ 启用了一些设置帮助,使 PUB 端应用程序代码知道实际 setup/cleanup个人 SUB 端发起的订阅(使用 XSUB 可扩展正式通信模式原型而不是 SUB ), 然而 PUB/XPUB 端必须改变它的行为,以便处理这种重新安排的消息流。


Identity/Addresses?(隐私权永远丧失?...低级危险)

这部分比较难,有很多交通工具-class可用,截至 2018 年第二季度至少:
这些:{ inproc:// | ipc:// | tcp:// | pgm:// | epgm:// | vmci:// },所以任何一方都很难配备一些魔法嗅探器来检测所有上述所需的软知识映射(实际有效的主题过滤器掩码)要嗅探的实际 transport-class 解码器。接下来,并非所有连接都可以轻松嗅探,是吗?


无论如何,可行:

如果您的应用程序需要以这种方式工作,可以扩展 ZeroMQ 工具并配备 ZMTP/RFC'd 协议解码器,以便为您的应用程序端程序提供这种低级信息,或者顶级应用程序可以自我宣传各自的身份

(
然而,请注意——如 [] 部分所述——一个 ZeroMQ-Context()-实例可能具有许多zmq.Socket()-实例,每个实例可能有许多-AccessPoint-s,每个可能使用不同的transport-class 并且可能会 .bind()/.connect()-ed 到许多不同的远程对等点 AccessPoint-s,所以确实是一团糟的拓扑结构形态在那里 :o)
)