/**************************************************************
技术博客
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的更多相关文章

  1. leveldb 学习记录(四)Log文件

    前文记录 leveldb 学习记录(一) skiplistleveldb 学习记录(二) Sliceleveldb 学习记录(三) MemTable 与 Immutable Memtablelevel ...

  2. JavaScript学习记录四

    title: JavaScript学习记录四 toc: true date: 2018-09-16 20:31:22 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...

  3. 4.VUE前端框架学习记录四:Vue组件化编码2

    VUE前端框架学习记录四:Vue组件化编码2文字信息没办法描述清楚,主要看编码Demo里面,有附带完整的代码下载地址,有需要的同学到脑图里面自取.脑图地址http://naotu.baidu.com/ ...

  4. zeromq学习记录(一)最初的简单示例使用ZMQ_REQ ZMQ_REP

    阅读zeromq guide的一些学习记录 zeromq官方例子 在VC下运行会有些跨平台的错误 我这里有做修改 稍后会发布出来 相关的代码与库  http://download.zeromq.org ...

  5. leveldb 学习记录(四) skiplist补与变长数字

    在leveldb 学习记录(一) skiplist 已经将skiplist的插入 查找等操作流程用图示说明 这里在介绍 下skiplist的代码 里面有几个模块 template<typenam ...

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

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

  7. zeromq学习记录(九)练习代码学习ZMQ_ROUTER ZMQ_READLER

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

  8. zeromq学习记录(六)C语言示例

    考虑到官方的示例c语言是最多的 官方未使用C++语言演示的例子就使用VC编译C语言例子 记录在此 /************************************************** ...

  9. zeromq学习记录(五)vc下多线程

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

随机推荐

  1. 【C++】boost::shared_ptr boost::make_shared

    一.shared_ptr shared_ptr作为一个动态分配的对象,当最后一个指向其内容的指针销毁(destroyed)或重置(reset),其指向的内容会被销毁(deleted).不再需要显式调用 ...

  2. 开机自启动 centos 7

    开机自启动,写入必要的命令即可.vim /etc/rc.d/rc.local

  3. Python打包之pyinstaller

    Pyinstaller 进行对应目录下的打包 执行完后请注意建议将该m2的拷贝走 加了参数-w后不会出现黑色控制台的窗子 常用参数说明: –icon=图标路径 -F 打包成一个exe文件 -w 使用窗 ...

  4. docker入门 什么是docker? 为什么使用docker?

    1.什么是docker? 轻量级操作系统虚拟化解决方案 2.为什么使用docker? 1.docker的启动是秒级的,比传统虚拟机快很多 2.资源利用率高,一台主机上可同时运行数千个docker容器 ...

  5. TypeScript 模块系统

    https://www.cnblogs.com/niklai/p/5808789.html

  6. Make a plan, and stand for it!

    我发现博主本人善于事前做计划,事后做总结.但是不善于坚持自己的计划.就拿10.1这个假期来讲,放假前看多许多的攻略,计划了很多条的自驾出行的路线,但是好像一条也没坚持,最后选择了一条临时的线路,而且临 ...

  7. C# WinForm 实现窗体淡入淡出

    有时候我们需要给窗体的打开和关闭添加点动画效果.最近正好有这类需求,于是研究了下窗体的淡入淡出,很简单就实现了,这里发表下成果,以供朋友们使用. 在Windows,有一个API,可以设置窗体的可见度, ...

  8. ASCS HA

    Please let us know what do you mean by "the PAS can not be accessed", what error did you f ...

  9. jmeter 实现 mysql 存储过程

    Callable Statement:存储过程语句.可以在一个脚本里实现增删改查. 实现方法: 1)首先创建一个存储过程 2)然后执行这个存储过程

  10. Java语法 [HelloWorld]

    程序代码: public class lqx {// AAAAANBBBBCKJKSLJIOQL/*请手打哦!*/ public static void main (String[] args) { ...