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(); zmq::socket_t requester(context, ZMQ_REQ);
requester.connect("tcp://localhost:5559"); for (int request = ; request < ; request++) { s_send(requester, "Hello");
std::string string = s_recv(requester); std::cout << "Received reply " << request
<< " [" << string << "]" << std::endl;
}
return ;
}
// broker.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include "zhelpers.hpp" int main(int argc, char *argv[])
{
zmq::context_t context(); // 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 ;
}
// worker.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include "zhelpers.hpp" int main()
{
zmq::context_t context(); zmq::socket_t responder(context, ZMQ_REP);
responder.connect("tcp://localhost:5560"); while ()
{
// Wait for next request from client
std::string string = s_recv(responder); std::cout << "Received request: " << string << std::endl; // Do some 'work'
Sleep(); // Send reply back to client
s_send(responder, "World"); }
return ;
}
还有使用zmq_proxy的天气更新服务器的代码,参考指南示例
zeromq学习记录(四)使用ZMQ_ROUTER ZMQ_DEALER的更多相关文章
- leveldb 学习记录(四)Log文件
前文记录 leveldb 学习记录(一) skiplistleveldb 学习记录(二) Sliceleveldb 学习记录(三) MemTable 与 Immutable Memtablelevel ...
- JavaScript学习记录四
title: JavaScript学习记录四 toc: true date: 2018-09-16 20:31:22 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...
- 4.VUE前端框架学习记录四:Vue组件化编码2
VUE前端框架学习记录四:Vue组件化编码2文字信息没办法描述清楚,主要看编码Demo里面,有附带完整的代码下载地址,有需要的同学到脑图里面自取.脑图地址http://naotu.baidu.com/ ...
- zeromq学习记录(一)最初的简单示例使用ZMQ_REQ ZMQ_REP
阅读zeromq guide的一些学习记录 zeromq官方例子 在VC下运行会有些跨平台的错误 我这里有做修改 稍后会发布出来 相关的代码与库 http://download.zeromq.org ...
- leveldb 学习记录(四) skiplist补与变长数字
在leveldb 学习记录(一) skiplist 已经将skiplist的插入 查找等操作流程用图示说明 这里在介绍 下skiplist的代码 里面有几个模块 template<typenam ...
- zeromq学习记录(八)负载均衡 附ZMQ_ROUTER的流程分析
/************************************************************** 技术博客 http://www.cnblogs.com/itdef/ ...
- zeromq学习记录(九)练习代码学习ZMQ_ROUTER ZMQ_READLER
/************************************************************** 技术博客 http://www.cnblogs.com/itdef/ ...
- zeromq学习记录(六)C语言示例
考虑到官方的示例c语言是最多的 官方未使用C++语言演示的例子就使用VC编译C语言例子 记录在此 /************************************************** ...
- zeromq学习记录(五)vc下多线程
/************************************************************** 技术博客 http://www.cnblogs.com/itdef/ ...
随机推荐
- HBuilder后台保活开发(后台自动运行,定期记录定位数据)
http://ask.dcloud.net.cn/question/28090 后台自动运行,定期记录定位数据 分类:HTML5+ 各位新年好 小弟以前用hbuilder开发过几个项目,现在有一新 ...
- pyhton3.5将汉字转成二进制的方法
直接上代码:name = "你好,中国人"byteName = bytes(name.encode("utf-8"))print(byteName)for b ...
- note 3 变量与简单I/O
变量(Variable) 用于引用(绑定对象的标识符) 语法 变量名=对象(数值.表达式等) 增量赋值运算符 count = count + 1 简写 count += 1 标识符(Identifie ...
- 使用睿云智合开源 Breeze 工具部署 Kubernetes v1.12.3 高可用集群
一.Breeze简介 Breeze 项目是深圳睿云智合所开源的Kubernetes 图形化部署工具,大大简化了Kubernetes 部署的步骤,其最大亮点在于支持全离线环境的部署,且不需要FQ获取 G ...
- Oracle 唯一 约束(unique constraint) 与 索引(index) 关系说明
一. 官网对Unique Constraints说明 http://download.oracle.com/docs/cd/E11882_01/server.112/e16508/datainte.h ...
- Android 开发 知晓各种id信息 获取线程ID、activityID、内核ID
/** * Returns the identifier of this process's user. * 返回此进程的用户的标识符. */ Log.e(TAG, "Process.myU ...
- LINUX 中实现逻辑卷、自动挂载
实验项目: 准备3块10G的空闲分区,将类型ID修改为8e(LVM) 使用其中2块分区组建名为myvg的卷组,查看此卷组信息 先检查有哪些物理卷 讲两块空闲分区转换成物理卷 再检查有哪些物理卷,查看其 ...
- Tools:apache部署https服务
转自:https://www.cnblogs.com/ccccwork/p/6529367.html 1.要搭建https,必须要具备的东西 1.超文本传输协议httpd(apache)和ssl模块( ...
- 英文文档帮查&翻译计划
以CSDN为首,知乎其次,cnblog带路的一大批博客上充斥着大量低质量的编程入门教程,代码粗制滥造,毫无缩进,没有高亮,东抄西抄.初学者如果长期参照这种垃圾博客来解决问题,将会适得其反,走入歧途. ...
- centos7使用rpm方式安装mysql
https://blog.csdn.net/smiles13/article/details/81460617 (部分参考) 先查看是否安装mariadb rpm -qa | grep mari ...