zoukankan      html  css  js  c++  java
  • zeromq学习记录(九)练习代码学习ZMQ_ROUTER ZMQ_READLER

    /**************************************************************
    技术博客
    http://www.cnblogs.com/itdef/
     
    技术交流群
    群号码:324164944
     
    欢迎c c++ windows驱动爱好者 服务器程序员沟通交流
    **************************************************************/
    // test1.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <zhelpers.hpp>
    #include <thread>
    
    void RouterFunc()
    {
        zmq::context_t context(1);
        zmq::socket_t broker(context, ZMQ_ROUTER);
        broker.bind("tcp://*:5671");
        
        while (1)
        {
            std::string identity = s_recv(broker);
            std::string recvStr = s_recv(broker);
            recvStr = s_recv(broker);
            std::cout << recvStr << std::endl;    
    
            s_sendmore(broker, identity);
            s_sendmore(broker, "");
            s_send(broker, "reply1");
            
            identity = s_recv(broker);
            recvStr = s_recv(broker);
            recvStr = s_recv(broker);
            std::cout << recvStr << std::endl;
    
            s_sendmore(broker, identity);
            s_sendmore(broker, "");
            s_send(broker, "reply2");
        
        }
    }
    
    void DealerFunc()
    {
        zmq::context_t context(1);
        zmq::socket_t worker(context, ZMQ_DEALER);
    
        worker.connect("tcp://localhost:5671");
    
        while (1)
        {
            s_sendmore(worker, "");
            s_send(worker, "hello world1");
            
            std::string recvStr = s_recv(worker);
            recvStr = s_recv(worker);
            std::cout << recvStr << std::endl;
    
            s_sendmore(worker, "");
            s_send(worker, "hello world2");
            
            recvStr = s_recv(worker);
            recvStr = s_recv(worker);
            std::cout << recvStr << std::endl;
        }
    }
    
    void TestRouterDealer()
    {
        std::thread routerThread = std::thread(RouterFunc);
        std::thread dealerThread = std::thread(DealerFunc);
    
        routerThread.join();
        dealerThread.join();
        return;
    }
    
    void RouterFun()
    {
        zmq::context_t context(1);
        zmq::socket_t broker(context, ZMQ_ROUTER);
    
        broker.bind("tcp://*:5671");
        while (1) {
            std::string identity = s_recv(broker);
            std::string recvStr = s_recv(broker);
            recvStr = s_recv(broker);
            std::cout << recvStr << std::endl;
    
            s_sendmore(broker, identity);
            s_sendmore(broker, "");
            s_send(broker, "Work harder1");
    
            identity = s_recv(broker);
            recvStr = s_recv(broker);
            recvStr = s_recv(broker);
            std::cout << recvStr << std::endl;
    
            s_sendmore(broker, identity);
            s_sendmore(broker, "");
            s_send(broker, "Work harder2");
        }
    }
    
    void ReqFun()
    {
        zmq::context_t context(1);
        zmq::socket_t worker(context, ZMQ_REQ);
    
        s_set_id(worker, (intptr_t)3);
        worker.connect("tcp://localhost:5671");
        while (1)
        {
            s_send(worker, "Hi Boss1");
            std::string recvStr = s_recv(worker);
            std::cout << recvStr << std::endl;
    
            s_send(worker, "Hi Boss2");
            recvStr = s_recv(worker);
            std::cout << recvStr << std::endl;
        }
    }
    
    
    void TestRouterReQ()
    {
        std::thread routerThread = std::thread(RouterFun);
        std::thread reqThread = std::thread(ReqFun);
    
        routerThread.join();
        reqThread.join();
        return;
    }
    
    
    int main()
    {
        //TestRouterDealer();
        TestRouterReQ();
        return 0;
    }
    View Code

     

  • 相关阅读:
    关于TileBrush中Viewbox,Viewport以及Stretch,AlignmentX/Y的详细研究
    ListBox数据绑定无效
    WPF---Effect效果
    wpf 画刷的分类
    LinearGradientBrush,RadialGradientBrush的样式说明
    改变ListBoxItem选中的颜色
    自定义的 ListBoxItem 自适应ListBox的宽度
    WPF ListBox数据绑定
    ItemsPanelTemplate的用法
    svn报错Item is not readable svn解决方案
  • 原文地址:https://www.cnblogs.com/itdef/p/5352487.html
Copyright © 2011-2022 走看看