最近在研究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++)的更多相关文章

  1. Windows 下VC++6.0制作、使用动态库和静态库

    Windows 下VC++6.0制作.使用动态库和静态库 一.VC++6.0制作.使用静态库 静态库制作 1.如图一在VC++6.0中new一个的为win32 static library工程并新建一 ...

  2. windows下mysql 8.0.12安装步骤及基本使用教程

    本文实例为大家分享了windows下mysql 8.0.12安装步骤及使用教程,供大家参考,具体内容如下 补充:mysql 已经更新到了 8.0.19,大致步骤和这个差不多,照着来就完事了. 我下载的 ...

  3. Windows下python 3.0版本django的安装、配置、与启动

    使用的环境是Windows操作系统,python的环境是3.6,django是官网上最新的版本1.10.6,本文介绍从安装python之后怎样用过pip管理工具安装django,以及django的项目 ...

  4. Windows下部署ElasticSearch5.0以下版本

    Windows下部署ElasticSearch分ElasticSearch5.0以上版本(包括5.0)和ElasticSearch5.0以下版本两种情况,这两种安装方式有很大不同.今天首先说Elast ...

  5. windows下配置cuda9.0和pytorch

    今天看了看pytorch官网竟然支持windows了,赶紧搞一个. 下载cuda 9.0  https://developer.nvidia.com/cuda-downloads 下载anaconda ...

  6. Windows下安装CUDA8.0

    在Win10下安装CUDA8.0,并使用VS2013测试: 机器配置: Windows 10 VS 2013 CUDA8.0 CUDA 8.0:下载地址 CUDA其他版本:下载地址 1. 安装CUDA ...

  7. 关于windows下基于php7.0.2下编写的第一个扩展

    网上的教程是比较多的,但是基于php7+windows的教程非常之少,通过几天的摸索及参考很多资料,终于发现如下可以运行. php7要求使用vc2015,同时安装sdk,我使用的是8.1的window ...

  8. Windows下编译Redis5.0.5

    先去弄Cygwin环境 http://www.cygwin.com/ 下载完成 打开 下一步 下一步 下一步 下一步 下一步,出现一个界面,让你添加地址,你打开官网,选择mirror sites,点击 ...

  9. windows下Qt5.1.0配置android环境搭建 good

    1.首先下载好需要配置的软件: 1>Qt 5.1.0 for Android (Windows 32-bit, 716 MB)(Info)下载地址: http://qt-project.org/ ...

随机推荐

  1. NHibernate中几个集合的选择

    NHibernate是从Hibernate移植过来的基于NET平台的一个ORM框架,同时跟这框架一起的还有一个开源库,叫做Iesi.Collections,这个库扩展了NET平台下面的几个集合,所谓集 ...

  2. Lidgren.Network – an introduction to networking in C# games

    Lidgren.Network – an introduction to networking in C# games http://genericgamedev.com/tutorials/lidg ...

  3. [Functional Programming ADT] Create State ADT Based Reducers (applyTo, Maybe)

    The typical Redux Reducer is function that takes in the previous state and an action and uses a swit ...

  4. EditText输入为空button不可点击搜索

    一丶任务详情 二丶改动后演示效果 三丶改动过程 分析:非常明显这里是须要监听EditText,推断输入字符串长度是否不为0来改变Button样式 首先的屡清楚代码逻辑在适当的位子加监听推断是最好的处理 ...

  5. [Exception Android 19] - android.widget.HeaderViewListAdapter.isEnabled

    java.lang.IndexOutOfBoundsException: Invalid index , size at java.util.ArrayList.throwIndexOutOfBoun ...

  6. Python-绑定与未绑定方法通俗讲解

    像函数一样,Python中的类方法也是一种对象.由于既可以通过实例也可以通过类来访问方法,所以在Python里有两种风格:   未绑定的类方法:没有self     通过类来引用方法返回一个未绑定方法 ...

  7. Python 使用 UTF-8 编码(转)

    Python 使用 UTF-8 编码(转) 原文出处:http://blog.chenlb.com/2010/01/python-use-utf-8.html 一般我喜欢用 utf-8 编码,在 py ...

  8. 【征文】Hadoop十周年特别策划——我与Hadoop不得不说的故事

    2016年是Hadoop的十周年生日,在今年,CSDN将以技术和实战为主题与大家共同为Hadoop庆生.其主要内容包含Hadoop专业词典.系列视频技术解析.Hadoop行业实践.线上问答.线下沙龙. ...

  9. Livereload介绍

    Livereload可理解为即时刷新,在前端开发中,开发人员在编写或调试html/js/css代码后须要从编辑器切换到浏览器.再刷新浏览器才干看到页面变化,这样的十分频繁的操作在一定程度上影响了工作效 ...

  10. JVM虚拟机(二):堆、栈、方法区概念区别

    Java 堆 Java堆是和Java应用程序关系最密切的内存空间,几乎所有的对象都放在其中,并且Java堆完全是自动化管理,通过垃圾收集机制,垃圾对象会自动清理,不需自己去释放. 根据垃圾回收机制的不 ...