我们的应用程序使用JeroMQ 0.4.3在客户端应用程序和API之间发送消息。(用ZAuth进行曲线加密)。
我们从代理中的ROUTER套接字(MDP模式)获取客户端消息。
在代理中接收到消息时,找到发送方IP的最佳方法是什么?
在ZMQ_SRCFD中,使用ZeroMQ消息选项和getpeername()似乎是可能的,但我还没有找到将其转换为JeroMQ的方法。
发布于 2017-12-22 07:52:07
最近的ZMQ_SRCFD API确实定义了消息可能携带的ZeroMQ属性。
事实A)
我们永远不会确定ZeroMQ API的版本是什么( 2.x ~ 3.x ~ 4.2.2 ~?)直到2017年),远程系统才会使用,除非一些确实严格且具有入侵能力的版本强制执行策略已经到位并处于主动状态。
事实B)
最近的tcp://传输类ZeroMQ API定义如下:
ZMQ_SRCFD返回读取消息的套接字的文件描述符。这允许应用程序通过getpeername(2).检索远程端点。请注意,相应的套接字可能已经是关闭,甚至重用了。当前仅为TCP套接字实现。
事实C)
任何语言包装器或绑定,包括首选的JeroMQ或其他,都必须单独覆盖所选的作用域(无论是完整的还是部分的范围覆盖)。
如果在某个特定的语言端口/绑定版本中缺少一个特性,那么最好的下一步是评估扩展已发布的源代码的可行性,以便通过(re)-implementing语言端口/绑定来覆盖所希望的特性,以便最好地满足ZeroMQ发布规范中指定的API特性。
事实D)
在C)根据B表示的主要不确定性变得不可行或不完整的情况下,人们仍然可以基于任何适当级别的安全考虑,着手实现自己的高级别IP地址节点-(Re)-discovery策略,如果需要的话,甚至可以从一个{朴素的自声明\\两步IP验证\.一个信任少的IP验证}-protocol开始。
https://stackoverflow.com/questions/47931867
复制相似问题