zeromq学习记录(九)练习代码学习ZMQ_ROUTER ZMQ_READLER
2024-08-22 05:52:09
/**************************************************************
技术博客
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 ;
}
最新文章
- 嵌入式Linux驱动学习之路(二十四)Nor Flash驱动程序
- 7. Reverse Words in a String
- js:数据结构笔记8--集合
- python网络编程socket之多线程
- iOS开发——swift精讲&;MVC应用实战
- 物理提取大绝招”Advanced ADB”???
- IE下iframe跨域session和cookie失效问题的解决方案
- 关于非现场审计软件的一些介绍(ACL、IEDA、Teammate)
- C++11 std::move和std::forward
- C语言实现循环队列的初始化&;进队&;出队&;读取队头元素&;判空-2
- 1.1.4 PROB Greedy Gift Givers
- python之模块与包
- SPOJ COT3.Combat on a tree(博弈论 Trie合并)
- 22.LinkedList
- php扩展php-redis安装与使用
- C# 含转义符的字符串处理
- Ubuntu 14.04 LTS 火狐浏览器中,鼠标选择文字被删除的解决办法
- 常用社交网络(微博等)动态新闻(feed、新鲜事)系统浅析(转)
- 【转】NativeScript的工作原理:用JavaScript调用原生API实现跨平台
- iOS - 开发中调试小技巧
热门文章
- Java12配置
- 报错:org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version.
- Cglib源码分析 invoke和invokeSuper的差别(转)
- Deployment Descriptor Web.xml
- Servlet 知识点总结(来自那些年的笔记)
- SpringBoot 六问
- SpringMVC 请求全过程漫谈
- python下彻底解决浏览器多窗口打开与切换问题
- jquery.validate和jquery.form配合实现验证表单后AJAX提交
- Hibernate 再接触 总结