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();
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的更多相关文章
- [转]Oracle学习记录 九 Prc C学习
经过前面的了解,现在想用C语言来编程了,搜索了很多东西,后来决定先用Pro C来进行学习 在安装完Oracle数据库后就可以进行编程了,里面有一个命令proc就是对程序进行预编译的. 在这记一下,这是 ...
- Spring学习记录(九)---通过工厂方法配置bean
1. 使用静态工厂方法创建Bean,用到一个工厂类 例子:一个Car类,有brand和price属性. package com.guigu.spring.factory; public class C ...
- WebGPU学习(九):学习“fractalCube”示例
大家好,本文学习Chrome->webgpu-samplers->fractalCube示例. 上一篇博文: WebGPU学习(八):学习"texturedCube"示 ...
- zeromq学习记录(八)负载均衡 附ZMQ_ROUTER的流程分析
/************************************************************** 技术博客 http://www.cnblogs.com/itdef/ ...
- Redis学习记录及Jedis代码示例
文章目录 二.Redis简介 三.Redis安装 1. 下载并解压安装 2. 安装C语言编译环境 3. 修改安装位置 4. 编译安装 5.启动Redis服务器 ①默认启动 ②定制配置项启动 [1]准备 ...
- GUI学习之九——QLineEdit的学习总结
我们在前面学习了各种按钮控件,从这一章开始就是各种输入控件的学习. 首先要用的就是QLineEdit——单行编辑器, 一描述 QLineEdit是一个单行文本编辑器,允许用户输入和编辑单行纯文本.自带 ...
- 深度学习(九) 深度学习最全优化方法总结比较(SGD,Momentum,Nesterov Momentum,Adagrad,Adadelta,RMSprop,Adam)
前言 这里讨论的优化问题指的是,给定目标函数f(x),我们需要找到一组参数x(权重),使得f(x)的值最小. 本文以下内容假设读者已经了解机器学习基本知识,和梯度下降的原理. SGD SGD指stoc ...
- r-cnn学习(九):学习总结
首先看下代码文件夹的说明(这部分转自:http://blog.csdn.net/bailufeiyan/article/details/50749694) tools 在tools文件夹中,是我们直接 ...
- Ansible学习记录五:PlayBook学习
0.介绍 Playbooks 是 Ansible 管理配置.部署应用和编排的语言,可以使用 Playbooks 来描述你想在远程主机执行的策略或者执行的一组步骤过程等 类似于一组任务集,定义好像项目, ...
随机推荐
- springboot 中的commandLineRunners接口
首先看实现了两个接口运行的顺序结果: My1: package com.example.commandlinerunner; import lombok.extern.java.Log;import ...
- 解决配置Windows Update失败,还原更改问题
问题描述 由于配置Windows Update失败,还原更改状态下无法正常关机.只能长按电源键关机后进入WinPE环境. 解决步骤 进入WinPE环境->选择Dism++->选择版本-&g ...
- 虚拟机克隆之后,网卡名称从eth0变成eth1之后的解决办法
使用VMware安装了CentOS虚拟机,克隆之后使用service network restart指令来重新启动网络服务时,会看到有eth0网卡不存在的提示.出现这种现象的原因是,很多Linux d ...
- 6-安装hbase
1.前提条件 ①安装zookeeper ②安装hdfs ③由于Hbase对时间的要求比较苛刻,所以3台节点时间必须同步,否则会报错 s10 zookeeper RegionServer HMaster ...
- day31网络编程
网络编程1. 目标:编写一个C/S架构的软件 C/S: Client(用户端)--------基于网络----------Server(服务端) B/S: Browser-------基于 ...
- python第三方库Requests的基本使用
Requests 是用python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTT ...
- python中的第三方日志模块logging
基本上每个系统都有自己的日志系统,可以使自己写的,也可以是第三方的.下面来简单介绍一下python中第三方的日志模块,入手还是比较简单的,但是也很容易给自己埋雷. 下面是我参考的资料链接 入手demo ...
- jqueryValidate
参数详情可参见: http://www.runoob.com/jquery/jquery-plugin-validate.html 基本使用: /** 数据保存前校验 **/ $("#use ...
- html语义化练习易牛课堂代码
html <body> <header> <!-- 导航 --> <nav> <a href=" ...
- service mysqld start,Failed to start mysqld.service: Access denied
service mysqld start 然后报: ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===Authentic ...