/**************************************************************
技术博客
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();
zmq::socket_t broker(context, ZMQ_ROUTER);
broker.bind("tcp://*:5671"); while ()
{
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();
zmq::socket_t worker(context, ZMQ_DEALER); worker.connect("tcp://localhost:5671"); while ()
{
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();
zmq::socket_t broker(context, ZMQ_ROUTER); broker.bind("tcp://*:5671");
while () {
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();
zmq::socket_t worker(context, ZMQ_REQ); s_set_id(worker, (intptr_t));
worker.connect("tcp://localhost:5671");
while ()
{
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 ;
}

zeromq学习记录(九)练习代码学习ZMQ_ROUTER ZMQ_READLER的更多相关文章

  1. [转]Oracle学习记录 九 Prc C学习

    经过前面的了解,现在想用C语言来编程了,搜索了很多东西,后来决定先用Pro C来进行学习 在安装完Oracle数据库后就可以进行编程了,里面有一个命令proc就是对程序进行预编译的. 在这记一下,这是 ...

  2. Spring学习记录(九)---通过工厂方法配置bean

    1. 使用静态工厂方法创建Bean,用到一个工厂类 例子:一个Car类,有brand和price属性. package com.guigu.spring.factory; public class C ...

  3. WebGPU学习(九):学习“fractalCube”示例

    大家好,本文学习Chrome->webgpu-samplers->fractalCube示例. 上一篇博文: WebGPU学习(八):学习"texturedCube"示 ...

  4. zeromq学习记录(八)负载均衡 附ZMQ_ROUTER的流程分析

    /************************************************************** 技术博客 http://www.cnblogs.com/itdef/   ...

  5. Redis学习记录及Jedis代码示例

    文章目录 二.Redis简介 三.Redis安装 1. 下载并解压安装 2. 安装C语言编译环境 3. 修改安装位置 4. 编译安装 5.启动Redis服务器 ①默认启动 ②定制配置项启动 [1]准备 ...

  6. GUI学习之九——QLineEdit的学习总结

    我们在前面学习了各种按钮控件,从这一章开始就是各种输入控件的学习. 首先要用的就是QLineEdit——单行编辑器, 一描述 QLineEdit是一个单行文本编辑器,允许用户输入和编辑单行纯文本.自带 ...

  7. 深度学习(九) 深度学习最全优化方法总结比较(SGD,Momentum,Nesterov Momentum,Adagrad,Adadelta,RMSprop,Adam)

    前言 这里讨论的优化问题指的是,给定目标函数f(x),我们需要找到一组参数x(权重),使得f(x)的值最小. 本文以下内容假设读者已经了解机器学习基本知识,和梯度下降的原理. SGD SGD指stoc ...

  8. r-cnn学习(九):学习总结

    首先看下代码文件夹的说明(这部分转自:http://blog.csdn.net/bailufeiyan/article/details/50749694) tools 在tools文件夹中,是我们直接 ...

  9. Ansible学习记录五:PlayBook学习

    0.介绍 Playbooks 是 Ansible 管理配置.部署应用和编排的语言,可以使用 Playbooks 来描述你想在远程主机执行的策略或者执行的一组步骤过程等 类似于一组任务集,定义好像项目, ...

随机推荐

  1. Python 模块collections

    1.深入理解python中的tuple的功能 基本特性 # 可迭代 name_tuple = ('0bug', '1bug', '2bug') for name in name_tuple: prin ...

  2. git 更新远程分支列表

    git remote update origin --prune git remote update origin -p

  3. 前端-JavaScript1-6——JavaScript之变量类型的转换

    6.1 string → number 先来学习一个语句,这个语句和alert差不多,也是弹窗,弹的是输入框: 1    prompt("请输入你的电话","139&qu ...

  4. docker stats top diff和cp

    实战[root@localhost ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES1fb916fb0e13 ...

  5. Cookie深度解析

    最近在公司做了Web端单点登录(SSO)功能,基于Cookie实现,做完之后感觉有必要总结一下,本文着重讲解Cookie,下文会说明单点登录的实现方案. Cookie简介 众所周知,Web协议(也就是 ...

  6. Java笔试面试题整理第六波(修正版)

    转载至:http://blog.csdn.net/shakespeare001/article/details/51330745 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...

  7. 虚拟机安装centOs+网络配置(完整说明)

    1.新建虚拟机(标准)   选择 (我以后下安装操作系统)       选择Linux 操作系统 版本为CentOS(32位)     虚拟机的名称和位置任意       磁盘容量如下即可     设 ...

  8. ES6 入门Promise

    Promise是一个对象用来传递异步操作的消息,有三种状态:Pending(进行中),Resolved(已完成又称Fulfilled)和Rejected(已失败). 特点:对象状态不受外界的影响.一旦 ...

  9. python 贝叶斯算法

    自我理解贝叶斯算法也就是通过概率来判断C是属于A类还是B类,下面是具体代码(python3.5 测试通过) 文字流程解释一波 1 )  加载训练数据和训练数据对应的类别 2)   生成词汇集,就是所有 ...

  10. js获取浏览器内核判断终端(是QQ打开还是QQ浏览器打开)

    var browser ={ versions: function() { var u = navigator.userAgent, var ua = navigator.userAgent.toLo ...