ZerMQ安装与使用

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(1);    //指定zmq 处理I/0事件的thread pool 为1void* z_socket=zmq_socket(context,ZMQ_REP);zmq_bind(z_socket,"tcp://*:5555");    // accept connections on a socketint recvn=1;while(1)    //循环工作{    //接受部分zmq_msg_t recv_msg;zmq_msg_init(&recv_msg);zmq_msg_recv(&recv_msg,z_socket,0);                            //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,6);memcpy(zmq_msg_data(&send_msg),"world",6);zmq_sendmsg(z_socket,&send_msg,0);zmq_msg_close(&send_msg);}zmq_close(z_socket);zmq_term(context);return 0;
}

复制代码

 

     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(1);    //指定zmq 处理I/0事件的thread pool 为1void* z_socket=zmq_socket(context,ZMQ_REQ);zmq_connect(z_socket,"tcp://localhost:5555");    // accept connections on a socketfor(int i=0;i<9;i++)    //循环工作{system("pause");    //暂停//发送部分zmq_msg_t send_msg;zmq_msg_init_size(&send_msg,6);memcpy(zmq_msg_data(&send_msg),"hello",6);zmq_msg_send(&send_msg,z_socket,0);zmq_msg_close(&send_msg);//接受部分zmq_msg_t recv_msg;zmq_msg_init(&recv_msg);zmq_msg_recv(&recv_msg,z_socket,0);                    //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 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463161.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

远程客户端连接MysqL数据库太慢解决方案

为什么80%的码农都做不了架构师&#xff1f;>>> 局域网客户端访问mysql 连接慢问题解决。 cd /etc/mysql vi my.conf [mysqld] skip-name-resolve 此选项禁用了DNS解析&#xff0c;连接速度会快很多。不过&#xff0c;这样的话就不能在MySQL的授权表中使用主机名了…

系统编程第三次上机

先把题目和百度到的参考资料粘过来吧orz 弱智答案等ddl过了再粘上来 一是怕错误的答案误导大家&#xff0c;二是怕查重QAQ 实验目的 掌握shell中管道、重定向的用法 学习shell基本语法 进阶内容 注&#xff1a;本部分内容不作为实验必须要求&#xff0c;只是作为对有兴趣深入学…

动态添加模板列及保持页面状态

前台 HTML code <form id"form1"runat"server"><asp:GridView ID"GridView1"runat"server"AutoGenerateColumns"False"><EmptyDataTemplate><asp:Label ID"Label1"runat"server"…

C语言base64编解码

base64码简介 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一&#xff0c;大家可以查看RFC2045&#xff5e;RFC2049&#xff0c;上面有MIME的详细规范。Base64编码可用于在HTTP环境下传递较长的标识信息。例如&#xff0c;在Java Persistence系统Hibernate中&#…

学号 20175212 《Java程序设计》第3周学习总结

学号 20175212 《Java程序设计》第3周学习总结 教材学习内容总结 一、 Java——面向对象语言 核心内容为对象&#xff0c;一切围绕着对象。以下为三个重要性质&#xff1a; 封装性&#xff1a;将数据和对数据的操作封装在一起。继承&#xff1a;子类可以继承父系的属性和行为。…

简析EDMX文件的构成 - CSDL、SSDL、MSL

To be done…转载于:https://www.cnblogs.com/5kuai/archive/2010/01/24/1655141.html

Cocos2d开发1:Xcode与TexturePacker的集成

2019独角兽企业重金招聘Python工程师标准>>> 一、导读 这是一篇关于xcode与TexturePacker集成的文章&#xff0c;主要说明cocos2d-iphone/cocos2d-x游戏开发时如何进行图片资源的自动化管理。在进行游戏开发时&#xff0c;我们为了提升性能及减少游戏安装包的大小&…

Boost智能指针——boost::scoped_ptr(使用及原理分析)

简介 boost::scoped_ptr是一个比较简单的智能指针&#xff0c;它能保证在离开作用域之后它所管理对象能被自动释放。下面这个例子将介绍它的使用&#xff1a; 1 #include <iostream>2 #include <boost/scoped_ptr.hpp>3 4 using namespace std;5 6 class Book7 {8 …

文件辅助类封装

using System;using System.Collections.Generic;using System.IO;using System.Text; namespace Manjinba.Communication.Common.Utils{ /// <summary> /// 文件辅助类 /// </summary> public class FileHelper { #region 检测指定目录是否存在 /// <summary&…

你知道吗…我不知道…你知道吗

很多你自以为知道却不知道的东西&#xff0c;你知道吗…我不知道…你知道吗…… 1.拉斯维加斯的赌场都没有钟。 2.麦当劳40%的利润来自Happy Meals的销售。 3.1996版的韦伯斯特词典有315处拼写错误。 4.每天平均有12个新生儿被交给错误的父母。 5.巧克力对于狗来说是致命的&…

c# 读取记事本txt文档到DataTable中

有时候我们仅仅需要用到简单的几个数据,没有必要在数据库中建立单独的表去存储这些数据然后去连接数据库等等。 例如&#xff1a;我们的程序中只需要给几个人定时发送邮件&#xff0c;而这几个人的邮件地址则可以放到txt文档中,然后读取出来即可。 从txt读取出来的数据&#xf…

通读教材第二问

我在教材第14章看到这样一段话&#xff1a;在专业时间模型中&#xff0c;一个Scrum团队负责开发项目的Product Backlog&#xff0c;同时还负责专门的时间来处理现有产品或者服务出现的问题。 请问&#xff1a;在团队项目开发中&#xff0c;专业时间模型是什么&#xff1f; 在查…

智能指针对比

智能指针对比&#xff1a; (1)、boost::shared_ptr<T> -- 基于引用计数器refcount(原子的) <1>、构造函数中refcount1&#xff0c;析构函数中refcount-1&#xff0c;当refcount的值减到为0时&#xff0c;该对象就会被销毁。 <2>、解决循环引用的问题&#x…

魔兽争霸3地图(WarIII Maps):梦若流星

魔兽争霸3地图&#xff08;WarIII Maps&#xff09;&#xff1a;梦若流星梦若流星游戏类型&#xff1a;RPG通关时间&#xff1a;30分钟流星蝴蝶剑后传&#xff0c;即使孟星魂想独善其身&#xff0c;也未必就能如愿………………为了更好的体验游戏&#xff0c;请在在“选项—声音…

Sql Server 关于整表插入另一个表部分列的语法以及select 语句直接插入临时表的语法 (转帖)...

语法是这样的 :1、说明&#xff1a;复制表(只复制结构,源表名&#xff1a;a 新表名&#xff1a;b) (Access可用) 法一&#xff1a;select * into b from a where 1 <>1 法二&#xff1a;select top 0 * into b from a 2、说明&#xff1a;拷贝表(拷贝数据,源表名&#xf…

在.Net中,如何创建一个后台执行的进程?

在.Net中&#xff0c;创建一个进程十分容易。但是如果你想创建一个没有窗口的后台进程&#xff0c;你需要对ProcessStartInfo进行一些特殊的设置&#xff1a; var process new Process() { StartInfo new ProcessStartInfo("executable file name", "argument…

WorldWind Java 版学习:1、启动过程

一、JOGL使用介绍 使用 JOGL&#xff0c;需要构造GLCapabilities、GLCanvas 和 GLEventListener 的对象&#xff0c;其中 GLCapabilities 对象用于构造 GLCanvas 对象&#xff0c;将 GLCanvas 添加到相应的 Container 中用于窗口显示&#xff0c;实现 GLEventListener 中的init…

Redis pub/sub机制在实际运用场景的理解(转载)

Redis 的pub/sub机制与23种设计模式中的观察者设计模式极为类似。但Redis对于这个机制的实现更为轻便和简结&#xff0c;没有观察者模式的那么复杂的逻辑考虑而仅仅需要通过两个Redis客户端配置channel即可实现&#xff0c;因此它也仅仅做了消息的"发布"和"订阅…

第三周学习进度总结

本周学习进度&#xff1a; 第三周3月11日至3月17日每天平均写代码时间30分钟代码量630行左右所发博客数6篇本周学到的知识点对HTMLcss的常用知识点有了大概的了解&#xff0c;对java的文件操作更加熟练了下周的计划熟练掌握本周学到的知识点&#xff0c;简单了解安卓手机端开发…

flash特效原理:图片滑动放大效果(2)

flash特效原理&#xff1a;图片滑动放大效果(1) http://blog.csdn.net/hero82748274/archive/2009/10/22/4715312.aspx 最近看了一些关于动态注册点更加的办法&#xff0c;顺手牵羊把他下载了&#xff0c;感觉挺好用。再把一个倒影类给下载了&#xff0c;结合上次一个做法&…