通过TCP使用JeroMQ,有没有办法获取发件人的IP?

时间:2017-12-21 19:51:30

标签: java tcp zeromq jeromq

我们的应用程序使用JeroMQ 0.4.3在客户端应用程序和API之间发送消息。 (使用ZAuth进行曲线加密)。

我们从代理商的 ROUTER 套接字获取客户端消息(MDP模式)。

在代理接收邮件时,找到发件人IP的最佳方法是什么?

在ZeroMQ中,似乎可以使用 ZMQ_SRCFD 消息选项和 getpeername() ,但我还没有找到翻译方法到JeroMQ。

1 个答案:

答案 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验证}协议。

相关问题