zeromq学习记录(一)最初的简单示例使用ZMQ_REQ ZMQ_REP
阅读zeromq guide的一些学习记录
zeromq官方例子 在VC下运行会有些跨平台的错误
我这里有做修改 稍后会发布出来
/**************************************************************技术博客http://www.cnblogs.com/itdef/技术交流群群号码:324164944欢迎c c++ windows驱动爱好者 服务器程序员沟通交流**************************************************************/zeromq是对对常用的网络通讯的收发、转发、订阅、推送等模式在socket底层通讯进行封装。
指南页面 http://zguide.zeromq.org/page:all
首先是最简单的一对一收发模式
socket在代码中标记为ZMQ_REQ ZMQ_REP
ZMQ_REQ 由客户端使用 用来发送请求和收取服务器的回复。此种标记仅允许发送请求并紧跟接受回复的处理序列模式
ZMQ_REP 由服务器使用 用来接受请求并且发送给与客户端的回复。此种标记仅允许接受请求并紧跟发送回复的处理序列模式
代码如下:
// hwserver.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <zmq.h>
#include <string.h> int main()
{
void* context = zmq_ctx_new();
void* responder = zmq_socket(context, ZMQ_REP);
zmq_bind(responder, "tcp://*:5555"); while ()
{
zmq_msg_t request;
zmq_msg_init(&request);
zmq_msg_recv(&request,responder,);
printf("received Hello\n");
zmq_msg_close(&request); Sleep();
zmq_msg_t reply;
zmq_msg_init_size(&reply, );
memcpy(zmq_msg_data(&reply), "World", );
zmq_msg_send(&reply, responder, );
zmq_msg_close(&reply);
}
// should not arrive here
zmq_close(responder);
zmq_ctx_destroy(context);
return ;
}
// hwclient_c.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <zmq.h>
#include <string.h> int main()
{
void* context = zmq_ctx_new(); printf("Connecting to hello world server...\n"); void* requester = zmq_socket(context, ZMQ_REQ);
zmq_connect(requester, "tcp://localhost:5555"); int request_nbr;
for (request_nbr = ; request_nbr != ; request_nbr++) {
char buffer[];
printf("Sending Hello %d…\n", request_nbr);
zmq_send(requester, "Hello", , );
zmq_recv(requester, buffer, , );
printf("Received World %d\n", request_nbr);
}
zmq_close(requester);
zmq_ctx_destroy(context); return ;
}

关于zeromq的消息字符串需要注意以下地方
仅仅传输字符串的文字部分而没有c语言用来结尾的'\0'
字符串结构如图

zeromq学习记录(一)最初的简单示例使用ZMQ_REQ ZMQ_REP的更多相关文章
- zeromq学习记录(六)C语言示例
考虑到官方的示例c语言是最多的 官方未使用C++语言演示的例子就使用VC编译C语言例子 记录在此 /************************************************** ...
- zeromq学习记录(七)订阅发布消息封装
之前也有提到 使用订阅发布 pub sub模式必须要显示定义ZMQ_SUBSCRIBE 只有以此模式定义的过滤字节开头的消息才会被订阅者收到 如果想收到所有信息 可定义subscriber.setso ...
- Mybatis学习记录(一)---- 简单的CRUD
1 mybatis是什么? mybatis是一个持久层的框架,是apache下的顶级项目. mybatis托管到googlecode下,再后来托管到github下(https://github.com ...
- zeromq学习记录(八)负载均衡 附ZMQ_ROUTER的流程分析
/************************************************************** 技术博客 http://www.cnblogs.com/itdef/ ...
- zeromq学习记录(五)vc下多线程
/************************************************************** 技术博客 http://www.cnblogs.com/itdef/ ...
- zeromq学习记录(四)使用ZMQ_ROUTER ZMQ_DEALER
/************************************************************** 技术博客 http://www.cnblogs.com/itdef/ ...
- zeromq学习记录(三)使用ZMQ_PULL ZMQ_PUSH
/************************************************************** 技术博客 http://www.cnblogs.com/itdef/ ...
- zeromq学习记录(二)天气更新服务器使用ZMQ_SUB ZMQ_PUB
/************************************************************** 技术博客 http://www.cnblogs.com/itdef/ ...
- Zookeeper学习记录及Java客户端连接示例
1. Zookeeper 1.1 简介 ZooKeeper is a centralized service for maintaining configuration information, na ...
随机推荐
- 实验-12-JSP简单入门
参考资料 JSP实验参考文件 主要看实验任务书 实验1. 第一个HTML页面与Tomcat 实验内容:任务书中的JSP-实验1. 1.1 EclipseJEE的使用 新建Tomcat Server 新 ...
- js window.location用法
<script> //设置或获取 href 属性中跟在问号后面的部分. console.log(window.location.search)//设置或获取对象指定的文件名或路径conso ...
- Linux进程被杀掉(OOM killer),查看系统日志
基本概念: Linux 内核有个机制叫OOM killer(Out Of Memory killer),该机制会监控那些占用内存过大,尤其是瞬间占用内存很快的进程,然后防止内存耗尽而自动把该进程杀掉. ...
- python之路——15
王二学习python的笔记以及记录,如有雷同,那也没事,欢迎交流,wx:wyb199594 复习 1.迭代器 1.可迭代协议:含有iter 2.迭代器协议:含有iter和next 3.特点:节省内存, ...
- [SQL]sql server中如何直接查询存储过程EXEC返回的结果集?
Declare @T Table (iDay VARCHAR(),iNum DECIMAL(,),yuxiang DECIMAL(,)) Insert @T --EXEC [dbo].[BSP0101 ...
- ETL讲解(很详细!!!)
ETL讲解(很详细!!!) ETL是将业务系统的数据经过抽取.清洗转换之后加载到数据仓库的过程,目的是将企业中的分散.零乱.标准不统一的数据整合到一起,为企业的决策提供分析依据. ETL是BI项目重要 ...
- expect login ssh
#!/usr/bin/expect -f set pwffd [lindex $argv 0] spawn ssh cmesvr2i expect "*password:" sen ...
- profile default1
DEVPISAP01:/sapmnt/ISD/profile # more ISD_J20_SHADEVEAIAP01 SAPSYSTEMNAME = ISD SAPSYSTEM = 20 INSTA ...
- ELK+Beats日志分析系统部署
一. 名词介绍: E:ElasticSearch 搜索,简称es L:Logstash 管理日志和事件的工具 K:Kibana 功能强大的数据显示客户端 Beats 轻量级数据传 ...
- CPU与内存互联的架构演变
随着计算机中CPU核数目的增加,传统的UMA(unifonn memory access)架构由于对关键硬件(如中央内存控制器)的竞争加剧出现了性能上的瓶颈,即扩展性不强.而NUMA架构则以其良好的可 ...