Windows下 Zmq v4.0.4的使用 (C++)
最近在研究Zero的使用。
我在网上找了一下,发觉大部分博客都写得乱七八糟,又不写明什么版本,什么系统下的,我都不知道怎么样才能弄出个编译过的程序来,只好自己摸索了。
我是windows下 使用vs2010的,v4.0.4的版本官方 0mq api 好像还没加上去,我是参照老版本(v3.1)的用法来的。
使用前你要对windows下动态库的使用有个基本了解。我的上一篇博客有讲,但有点乱,有时间再改一改。
这里我是用了动态库的隐式连接,需要动态库的 动态库文件".dll" , 动态库的LIB文件".lib" , 动态库的函数引入声明 "zmq.h" 和 "zmq_utils.h" 中有了(实现方式应该是我上篇博客末尾中的 "预编译开关切换类的导入导出定义");
本篇要试的是请求--回应模式:

使用步骤:
1.Zmq动态库的获取:
首先先下载 Zeromq 下来:http://zeromq.org/area:download,点击”Windows installers",下完安装。

安装完成后,在安装目录 C:\Program Files\ZeroMQ 4.0.4 下面,你能找到刚刚的4个文件:
ZeroMQ 4.0.4 \bin 中的 “libzmq-v100-mt-gd-4_0_4.dll”,
ZeroMQ 4.0.4 \lib 中的 "libzmq-v100-mt-gd-4_0_4.lib",
ZeroMQ 4.0.4 \include 中的"zmq.h" 和 "zmq_utils.h"
复制到你 新建要用的 项目工作目录当中。

这是服务端的,客户端也一样;
如果你的编译器不是vs2010,需要什么版本请参考:http://zeromq.org/distro:microsoft-windows

至于Debug版在是带调试信息的,Release版文件则小很多,两个都可以用,你个人喜欢。
2.Zmq动态库的使用:
1.创建server端,win32控制台 ,空项目,把 动态库文件复制进来。代码如下:
//2014-4-2 programed by sixbeauty
//zeromp 通讯测试server 端
#include "zmq.h"
#include "zmq_utils.h" //Zeromq 函数的导入在这里帮我们实现了
#include <iostream>
#pragma comment(lib,"libzmq-v100-mt-gd-4_0_4.lib")
int main()
{
std::cout << "-------------------Zeromq REP style-----------------------" <<std::endl;
std::cout << "---------------------Author:SanYue------------------------" <<std::endl; void* context=zmq_init(); //指定zmq 处理I/0事件的thread pool 为1
void* z_socket=zmq_socket(context,ZMQ_REP); zmq_bind(z_socket,"tcp://*:5555"); // accept connections on a socket int recvn=;
while() //循环工作
{
//接受部分
zmq_msg_t recv_msg;
zmq_msg_init(&recv_msg);
zmq_msg_recv(&recv_msg,z_socket,); //0表示非阻塞
std::cout<<"第\t"<<recvn++<<"\t次收到client信息:\t";
std::cout<<(char*)zmq_msg_data(&recv_msg)<<std::endl;
zmq_msg_close(&recv_msg); //发送部分
zmq_msg_t send_msg;
zmq_msg_init_size(&send_msg,);
memcpy(zmq_msg_data(&send_msg),"world",);
zmq_sendmsg(z_socket,&send_msg,);
zmq_msg_close(&send_msg);
}
zmq_close(z_socket);
zmq_term(context); return ;
}
2.client端,一样是 win32控制台 空项目,把 动态库文件复制进来。代码如下:
//2014-4-2 programed by sixbeauty
//zeromp 通讯测试client 端
#include "zmq.h"
#include "zmq_utils.h" //Zeromq 函数的导入在这里帮我们实现了
#include <iostream>
#pragma comment(lib,"libzmq-v100-mt-gd-4_0_4.lib")
int main()
{
std::cout << "-------------------Zeromq REB style-----------------------" <<std::endl;
std::cout << "---------------------Author:SanYue------------------------" <<std::endl; void* context=zmq_init(); //指定zmq 处理I/0事件的thread pool 为1
void* z_socket=zmq_socket(context,ZMQ_REQ); zmq_connect(z_socket,"tcp://localhost:5555"); // accept connections on a socket for(int i=;i<;i++) //循环工作
{
system("pause"); //暂停 //发送部分
zmq_msg_t send_msg;
zmq_msg_init_size(&send_msg,);
memcpy(zmq_msg_data(&send_msg),"hello",);
zmq_msg_send(&send_msg,z_socket,);
zmq_msg_close(&send_msg); //接受部分
zmq_msg_t recv_msg;
zmq_msg_init(&recv_msg);
zmq_msg_recv(&recv_msg,z_socket,); //0表示非阻塞
printf("收到Server端回答:\t");
std::cout<<(char*)zmq_msg_data(&recv_msg)<<std::endl;
zmq_msg_close(&recv_msg); }
zmq_close(z_socket);
zmq_term(context); return ;
}
这是 REP/REQ 请求/回应模式的尝试,这种模式必须同时有 recv 和 send,具体会在下一篇讲。
Windows下 Zmq v4.0.4的使用 (C++)的更多相关文章
- Windows 下VC++6.0制作、使用动态库和静态库
Windows 下VC++6.0制作.使用动态库和静态库 一.VC++6.0制作.使用静态库 静态库制作 1.如图一在VC++6.0中new一个的为win32 static library工程并新建一 ...
- windows下mysql 8.0.12安装步骤及基本使用教程
本文实例为大家分享了windows下mysql 8.0.12安装步骤及使用教程,供大家参考,具体内容如下 补充:mysql 已经更新到了 8.0.19,大致步骤和这个差不多,照着来就完事了. 我下载的 ...
- Windows下python 3.0版本django的安装、配置、与启动
使用的环境是Windows操作系统,python的环境是3.6,django是官网上最新的版本1.10.6,本文介绍从安装python之后怎样用过pip管理工具安装django,以及django的项目 ...
- Windows下部署ElasticSearch5.0以下版本
Windows下部署ElasticSearch分ElasticSearch5.0以上版本(包括5.0)和ElasticSearch5.0以下版本两种情况,这两种安装方式有很大不同.今天首先说Elast ...
- windows下配置cuda9.0和pytorch
今天看了看pytorch官网竟然支持windows了,赶紧搞一个. 下载cuda 9.0 https://developer.nvidia.com/cuda-downloads 下载anaconda ...
- Windows下安装CUDA8.0
在Win10下安装CUDA8.0,并使用VS2013测试: 机器配置: Windows 10 VS 2013 CUDA8.0 CUDA 8.0:下载地址 CUDA其他版本:下载地址 1. 安装CUDA ...
- 关于windows下基于php7.0.2下编写的第一个扩展
网上的教程是比较多的,但是基于php7+windows的教程非常之少,通过几天的摸索及参考很多资料,终于发现如下可以运行. php7要求使用vc2015,同时安装sdk,我使用的是8.1的window ...
- Windows下编译Redis5.0.5
先去弄Cygwin环境 http://www.cygwin.com/ 下载完成 打开 下一步 下一步 下一步 下一步 下一步,出现一个界面,让你添加地址,你打开官网,选择mirror sites,点击 ...
- windows下Qt5.1.0配置android环境搭建 good
1.首先下载好需要配置的软件: 1>Qt 5.1.0 for Android (Windows 32-bit, 716 MB)(Info)下载地址: http://qt-project.org/ ...
随机推荐
- (转)NIO 内存映射文件
内存映射文件 I/O 是一种读和写文件数据的方法,它可以比常规的基于流或者基于通道的 I/O 快得多. 内存映射文件 I/O 是通过使文件中的数据神奇般地出现为内存数组的内容来完成的.这其初听起来似乎 ...
- VP9 Video Codec
http://www.webmproject.org/vp9/ WebM Repositories libvpx: VP8/VP9 Codec SDK pull http://git.chromi ...
- 在表单里面检查用户名是否存javascript
function CheckUser(fn) { $.get("/Pages/Handler/CheckExistHander.ashx", { "txt_UserNo& ...
- Android 发送短信总结
SMS涉及的主要类SmsManager 实现SMS主要用到SmsManager类,该类继承自java.lang.Object类,下面我们介绍一下该类的主要成员. 公有方法: ArrayList< ...
- Win7如何更改网络位置,如何加入或创建家庭组
1 打开网络和共享中心,点击连接上网的哪一个网络,点击把公用网络改为家庭网络 2 依次执行下一步 3 如果是加入一个家庭组,则输入家庭组的密码,否则将得到一个家庭组的密码 4 加入成功 ...
- 2014小米,百度,pptv,去哪儿笔试题目回忆
今天一共笔试了这四家,真累啊,上午10点小米,下午2点百度,下午3点PPTV,下午5点去哪儿,今天右手太酸了,打的都话了50左右,如果没面试通知,那我可亏大了 小米就三题: 1.一个数组,排序要求,所 ...
- VScode eslint-plugin-vue 自动修复eslint报错
1.安装插件 npm i -g eslint-plugin-vue 2.修改项目跟路径下的文件:.eslintrc | .eslint.js 3.添加eslint 和 vetur 插件 4.修改vsc ...
- RSA/DSA 密钥的工作原理
下面从整体上粗略的介绍了 RSA/DSA 密钥的工作原理.让我们从一种假想的情形开始,假定我们想用 RSA 认证允许一台本地的 Linux 工作站(称作 localbox)打开 remotebox 上 ...
- 《Javascript权威指南》学习笔记之十九--HTML5 DOM新标准---处理文档元信息和管理交互能力
一.了解DOM 1.DOM是Document Object Model的缩写,即文档对象类型,是文档在内存中的表示形式,是一个应用程序接口,定义了文档的逻辑结构以及一套訪问和处理文档的方法. 2.HT ...
- jQuery源代码学习:经常使用正則表達式
转载自:http://nuysoft.iteye.com/blog/1217898 经常使用的数字正则(严格匹配) 正则 含义 ^[1-9]\d*$ 匹配正整数 ^-[1-9]\d*$ 匹配负整数 ^ ...