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/ ...
随机推荐
- [ES6] 07. Default Value for function param
Normally, we can set default value for function param: //Here use "Hello" as default param ...
- spock spring 集成测试框架搭建心得
转载:http://blog.csdn.net/hankle_xu/article/details/77531880 spock测试框架,使用groovy作为脚本语言,开发出的测试脚本具有优良的阅读性 ...
- PHP基础知识(一)
The Basics Comparison operators Comparison operators are an often overlooked aspect of PHP, which ca ...
- vue - src for components || router(index.js)
描述:重新编写一个组件 1.1 编写一个PrintName.vue <!--这里是模板 --> <template> <div class="hello&quo ...
- iOS程序发布测试-生成ad hoc证书
转自: http://blog.sina.com.cn/s/blog_68444e230100srdn.html iOS程序发布测试3-生成ad hoc证书 iOS证书分2种,1种是开发证书,用来给你 ...
- Hibernate 一对一关联查询
版权声明:本文为博主原创文章,如需转载请标注转载地址. 博客地址:http://www.cnblogs.com/caoyc/p/5602418.html 一对一关联,可以分为两种.一种是基于外键的关 ...
- spring声明式事务以及配置
使用spring提供的事务处理机制的好处是程序员可以不用关心事务的切面了,只要配置就好了,可以少写代码. spring声明式事务处理 spring 声明:针对的是程序员,程序员告诉spring容器,哪 ...
- HTML5学习笔记 视频
许多时髦的网站都提供视频.html5提供了展示视频的标准 检测您的浏览器是否支持html5视频 Web上的视频 直到现在,仍然不存在一项旨在网页上显示视频的标准. 今天,大多数视频是通过插件(比如Fl ...
- ubuntu下运行第一个.net core web程序
前置条件 ubuntu系统 且已经安装dotnetcore运行环境 mkdir testMVC 创建一个文件夹 cd testMVC 进入文件夹 dotnet new -t web 创建程序( ...
- python selenium--常用函数3
ActionChains类鼠标操作的常用方法: 引入ActionChains类:from selenium.webdriver.common.action_chains import ActionCh ...