我们的应用程序使用JeroMQ 0.4.3在客户端应用程序和API之间发送消息。 (使用ZAuth进行曲线加密)。
我们从代理商的 ROUTER
套接字获取客户端消息(MDP模式)。
在代理接收邮件时,找到发件人IP的最佳方法是什么?
在ZeroMQ中,似乎可以使用 ZMQ_SRCFD
消息选项和 getpeername()
,但我还没有找到翻译方法到JeroMQ。
答案 0 :(得分:1)
最新的ZeroMQ API确实定义了消息可能带有的 ZMQ_SRCFD
属性。
事实A)
一个主要是永远不确定,ZeroMQ API版本(2.x~3.x~4.2.2~?,从EoY-2017 开始)远程系统使用什么,除非一些确实是僵化和入侵 - 强大的版本执行政策已经到位并且有效。
事实B)
最近的ZeroMQ API为 tcp://
传输类定义了这个:
<强>
ZMQ_SRCFD
强>
返回读取消息的套接字的文件描述符。这允许应用程序通过getpeername(2)
检索远程端点。请注意,相应的套接字可能已经已关闭,已重新使用。目前仅针对TCP套接字实现。
事实C)
任何语言包装或绑定(包括首选的JeroMQ或其他语言包装或绑定)都必须自行覆盖所选范围(无论是完整或部分范围覆盖)。
如果缺少某个特定语言端口/绑定版本的功能,最好的下一步是评估扩展已发布源代码的可行性,以便通过(重新)实现语言端口来覆盖所希望的功能/ binding,以便最好地满足ZeroMQ发布规范所指定的所需API功能。
事实D)
在C)根据B)表示的主要不确定性变得不可行或不完整的情况下,人们仍然可以继续实施自己的高级IP地址节点(重新)发现策略,基于任何从一个{天真的自我声明|开始,适当的安全问题等级两步IP验证| ...... |如果需要,可以使用无信任的IP验证}协议。