/**************************************************************
技术博客
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 ;
}

最新文章

  1. 嵌入式Linux驱动学习之路(二十四)Nor Flash驱动程序
  2. 7. Reverse Words in a String
  3. js:数据结构笔记8--集合
  4. python网络编程socket之多线程
  5. iOS开发——swift精讲&amp;MVC应用实战
  6. 物理提取大绝招”Advanced ADB”???
  7. IE下iframe跨域session和cookie失效问题的解决方案
  8. 关于非现场审计软件的一些介绍(ACL、IEDA、Teammate)
  9. C++11 std::move和std::forward
  10. C语言实现循环队列的初始化&amp;进队&amp;出队&amp;读取队头元素&amp;判空-2
  11. 1.1.4 PROB Greedy Gift Givers
  12. python之模块与包
  13. SPOJ COT3.Combat on a tree(博弈论 Trie合并)
  14. 22.LinkedList
  15. php扩展php-redis安装与使用
  16. C# 含转义符的字符串处理
  17. Ubuntu 14.04 LTS 火狐浏览器中,鼠标选择文字被删除的解决办法
  18. 常用社交网络(微博等)动态新闻(feed、新鲜事)系统浅析(转)
  19. 【转】NativeScript的工作原理:用JavaScript调用原生API实现跨平台
  20. iOS - 开发中调试小技巧

热门文章

  1. Java12配置
  2. 报错:org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version.
  3. Cglib源码分析 invoke和invokeSuper的差别(转)
  4. Deployment Descriptor Web.xml
  5. Servlet 知识点总结(来自那些年的笔记)
  6. SpringBoot 六问
  7. SpringMVC 请求全过程漫谈
  8. python下彻底解决浏览器多窗口打开与切换问题
  9. jquery.validate和jquery.form配合实现验证表单后AJAX提交
  10. Hibernate 再接触 总结