• zeromq学习记录(四)使用ZMQ_ROUTER ZMQ_DEALER


    /**************************************************************
    技术博客
    http://www.cnblogs.com/itdef/
     
    技术交流群
    群号码:324164944
     
    欢迎c c++ windows驱动爱好者 服务器程序员沟通交流
    **************************************************************/

    这两张图显示了网络结构的改变

    客户端与服务端的通讯不必互相了解 各自只需连接到BROKER即可。

    两张图之间的变化 有许多细节需要注意 比如端点的ID 发送多部分组成信息  ZMQ_ROUTER ZMQ_DEALER的使用

    以及使用ZMQ_POLL管理多链接

    但是此处仅仅使用zmq_proxy,将以上内容均封装起来。

    上代码

    // client.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include "zhelpers.hpp"
    
    int main()
    {
        zmq::context_t context(1);
    
        zmq::socket_t requester(context, ZMQ_REQ);
        requester.connect("tcp://localhost:5559");
    
        for (int request = 0; request < 10; request++) {
    
            s_send(requester, "Hello");
            std::string string = s_recv(requester);
    
            std::cout << "Received reply " << request
                << " [" << string << "]" << std::endl;
        }
        return 0;
    }
    View Code
    // broker.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include "zhelpers.hpp"
    
    int main(int argc, char *argv[])
    {
        zmq::context_t context(1);
    
        //  Socket facing clients
        zmq::socket_t frontend(context, ZMQ_ROUTER);
        frontend.bind("tcp://*:5559");
    
        //  Socket facing services
        zmq::socket_t backend(context, ZMQ_DEALER);
        backend.bind("tcp://*:5560");
    
        //  Start the proxy
        zmq::proxy(frontend, backend, nullptr);
        return 0;
    }
    View Code
    // worker.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include "zhelpers.hpp"
    
    
    int main()
    {
        zmq::context_t context(1);
    
        zmq::socket_t responder(context, ZMQ_REP);
        responder.connect("tcp://localhost:5560");
    
        while (1)
        {
            //  Wait for next request from client
            std::string string = s_recv(responder);
    
            std::cout << "Received request: " << string << std::endl;
    
            // Do some 'work'
            Sleep(1);
    
            //  Send reply back to client
            s_send(responder, "World");
    
        }
        return 0;
    }
    View Code

     还有使用zmq_proxy的天气更新服务器的代码,参考指南示例

  • 相关阅读:
    Grafana+Prometheus监控mysql性能
    性能测试监控平台Grafana的使用
    搭建grafana+telegraf+influxdb服务器性能监控平台
    cocos2d-x jsb 防止触摸事件传递
    web app 相关记录
    如何在Teamcenter中使用PMI?
    浅谈人机工程应用在数字化工艺中的作用
    关于奇葩说
    一些感想
    关于起名
  • 原文地址:https://www.cnblogs.com/itdef/p/5347363.html
Copyright © 2020-2023  润新知