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

     

  • 相关阅读:
    创业之死:97%的创业失败是因为…… . 分类: 项目管理 2014-06-18 17:56 315人阅读 评论(1) 收藏
    linux下的APK反编译软件及过程介绍 . 分类: arm-linux-Ubuntu 2014-06-18 17:51 400人阅读 评论(0) 收藏
    g++基本用法 分类: arm-linux-Ubuntu 2014-06-18 17:50 414人阅读 评论(0) 收藏
    更改 vc6 各窗口字体 (zz)
    程序员编程技术迅速提高终极攻略 (zz)
    A browser for WinCE/Windows base WebKit. (zz)
    输入一个十进制的数到dx_ax,然后十六进制转十进制输出
    汇编判断语句
    用结构体指针存储数据__正序_逆序下的输入
    二叉排序树
  • 原文地址:https://www.cnblogs.com/itdef/p/5352487.html
Copyright © 2011-2022 走看看