你能在ZeroMQ中获得发布者和订阅者的身份/地址吗?

时间:2018-05-08 13:13:35

标签: c zeromq

我一直在阅读文档,而且我似乎无法找到有关我的查询的任何信息。

我只需要发布者和订阅者的IP地址来跟踪,因此我可以将它们显示为我的程序的输出。

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

所以我可以这样:

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

1 个答案:

答案 0 :(得分:0)

[+ 1] 为您的灵感座右铭:" 我们死的那一天是我们停止学习的那天"

  

可以有这样的内容:?

嗯,是和否:

虽然API v4.2 +为设置提供了一些帮助,使 PUB 侧应用程序代码能够识别单个 SUB <的实际设置/清理/ strong> -side发起的订阅(使用 XSUB 可伸缩形式通信模式原型而不是SUB),但PUB/XPUB - 方必须更改它&# 39;行为,以便处理这种重新安排的消息流。

身份/地址?(隐私的人权永远失去了...... ......次等的危险)

这一部分更难,有许多运输类别,至少在2018年至Q2期间可用:
这些: { inproc:// | ipc:// | tcp:// | pgm:// | epgm:// | vmci:// } ,因此任何一方都难以配备一些魔法嗅探器来检测所有上述所需的软知识映射(实际上有效的主题过滤器掩码)与实际传输 - 类解码器嗅探。接下来,并非所有连接都容易被嗅探,是吗?

无论如何,可行:

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


然而,注意 - 如 [ZeroMQ hierarchy in less than a five seconds] 部分所述 - 一个ZeroMQ- Context() - 实例可能有很多 {{ 1}} - 实例,每个实例可能有多个 AccessPoint -s,每个实例可能使用不同的传输类,并且可能会获得{{} 1}} - 编辑到许多不同的远程对等 AccessPoint -s,所以确实存在大量的拓扑形态:o)