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 ...
随机推荐
- ionic3 热更新发布步骤记录
1.安装基本框架npm install -g ionic@latest npm install -g cordova ionic 验证版本号 ionic –version cordova -versi ...
- CSS之边框
<!DOCTYPE html> <!--边框--> <html lang="en"> <head> <meta charset ...
- Bootstrap 前端UI框架
Bootstrap 有哪些优越性? 1.简单灵活的用于搭建WEB页面的HTML,CSS, JavaScript的工具集 2.基于html5, css3, 具有良好特性,友好的学习曲线,卓越的兼容性,1 ...
- 经典笔试题型----IT经理(IT Manager)
一般企业设置IT部门都是服务性质,虽然谈IT需要成为战略部门许多年,但用脑子想下,这概率有多少?企业存在的第一目标是:赚取利润.贸易型企业最重要的部门为销售部,生产型企业最重要的部门为销售部与生产部, ...
- mybatis的typeHandler
typeHandler作用: 1.传参时将javaType类型转换成jdbcType 2.结果集中ResultSet中取值时,jdbcType转换为javaType; 系统自定义的typeHandle ...
- lecune入门示例
注意:本示例中的lucene版本需在jdk7以上使用. 一.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" ...
- MaC 修改MySQL密码
1.苹果->系统偏好设置->最下边点mysql 在弹出页面中 关闭mysql服务(点击stop mysql server) 2.进入终端输入:cd /usr/local/mysql/bin ...
- IntelliJ IDEA 调试技巧
程序员的工作内容,有不少的时间是用在调试代码上.可以说不是在调试代码,就是即将调试代码. 掌握调试代码的一些技巧,在使用IDE提供的debugger时会快速定位问题的方式. 1.多线程调试 在多线程应 ...
- 2008nian元旦
我要做---->> 控制财务状况---1记账 2 炒股或基金 3预算 锻炼---每次要达到锻炼的效果 学习计划-- 1报班架构 2 项目管理 3读书 爱好---做饭,收拾整理 职业规划. ...
- 《从零玩转python+人工智能-3》120,122节课深度优先疑问解答
深度优先(从左往右): 按照这个原则来:至于使用栈,或者队列:根据它们不同的特性:最终务必保证最终结果是原继承结构的“从左往右”:所以,如果是栈,就是右侧先入栈,左侧再入(这样左侧能先出来,遵循从左 ...