【问题标题】:ZeroMQs router-dealer pattern. How to handle client address?ZeroMQ 路由器-经销商模式。如何处理客户地址?
【发布时间】:2012-11-09 19:02:54
【问题描述】:

我使用 0MQ 的路由器经销商模式。现在我想存储客户的地址。我知道来自客户端的第一条消息是地址,我猜是 IP + portno。或者更确切地说,来自路由器套接字的recv() 将地址放在接收到的数据包的前面。但是我该如何处理这个地址,例如打印或存储它以供进一步传出消息?它是什么类型的?

【问题讨论】:

    标签: c++ c network-programming zeromq


    【解决方案1】:

    这是关于此的指南解释:http://zguide.zeromq.org/page:all#The-Request-Reply-Mechanisms

    ROUTER 管理一组连接,并为每个连接保留一个“身份”,这是一个随机数,就像一个句柄。它在每条消息上告诉你这个身份,作为第一帧。这是一个二进制值,所以不能按原样打印。

    DEALER 可以通过在连接时告诉它“使用此 ID”来覆盖 ROUTER 的内部身份。这就是 zmq_setsockopt ZMQ_IDENTITY 选项的作用。当节点有一些唯一的、通常是字符串的、对应用程序有意义的 ID 时,我们会使用它。

    【讨论】:

      【解决方案2】:

      消息的第一部分是发件人(经销商)的身份,您可以在经销商端设置,使用zmq_setsockopt功能(在连接到路由器之前)。这是一个最大 255 字符长的字符串。如果你不设置它,会有一些随机的独特的东西,从#0 char开始。

      所以默认情况下它不是您的经销商的 ip+端口,但您可以根据需要将这些信息放在那里。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-01
        • 1970-01-01
        • 2016-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多