zeroMQ 是一个高性能的分布式设计的消息队列,网上有人进行过性能的比较,非常厉害,并且很大约40多种语言的API 可以调用,真实很不错的。

而且有一点就是使用简单,不需要服务器,对于使用C/C++ 的人员来说直接使用dll 就行,就是方便,对于.net 的程序员也有相应的包装类,使用也是

比较方便的。

今天就使用C语言编写一下学习代码,主要是为了了解基本知识,学习使用。

客户端的代码如下:

#include "stdafx.h"

#include "zmq.h"
#include "zmq_utils.h"
int main (int argc, char const *argv[])
{
        void* context = zmq_ctx_new();
        printf("Client Starting….\n");
        void* request = zmq_socket(context, ZMQ_REQ);
        zmq_connect(request, "tcp://localhost:4040");
        int count = 0;
        for(;;) {
        zmq_msg_t req;
        zmq_msg_init_size(&req, strlen("hello"));
        memcpy(zmq_msg_data(&req), "hello", 5);
        printf("Sending: hello - %d\n", count);
        zmq_msg_send(&req, request, 0);
        zmq_msg_close(&req);
        Sleep(1000);
        zmq_msg_t reply;
        zmq_msg_init(&reply);
        zmq_msg_recv(&reply, request, 0);
        printf("Received: hello - %d\n", count);
        zmq_msg_close(&reply);
        count++;
        }
        
        zmq_close(request);
        zmq_ctx_destroy(context);
        return 0;
}

代码的基本就是创建丽连接,并发送数据,同时接受来自连接端的数据,比较简单。

服务器端的代码如下:

#include "stdafx.h"
#include "stdio.h"
#include "zmq.h"
#include "zmq_utils.h"

int _tmain(int argc, _TCHAR* argv[])
{
    void* context = zmq_ctx_new();
    void* respond = zmq_socket(context, ZMQ_REP);
    zmq_bind(respond, "tcp://*:4040");
    printf("Starting…\n");
    for(;;) {
    zmq_msg_t request;
    zmq_msg_init(&request);
    zmq_msg_recv(&request, respond, 0);
    printf("Received: hello\n");
    zmq_msg_close(&request);
    Sleep(2000);
    zmq_msg_t reply;
    zmq_msg_init_size(&reply, strlen("world"));
    memcpy(zmq_msg_data(&reply), "world", 5);
    zmq_msg_send(&reply, respond, 0);
    zmq_msg_close(&reply);
    }
    zmq_close(respond);
    zmq_ctx_destroy(context);
    return 0;
    
}
和客户端的代码相似,也是进行创建接受数据,发送数据。

一下是测试的界面信息。

都是比较简单的测试,可能比较重要的就是选择好对应的开发环境支持的dll  zeroMQ  的官网有相应的安装包可供下载。

.net 进行学习的可以直接使用vs 的包管理进行在线安装,也很方便,API 也比较好用。

zeroMQ 学习的更多相关文章

  1. zeromq学习记录(一)最初的简单示例使用ZMQ_REQ ZMQ_REP

    阅读zeromq guide的一些学习记录 zeromq官方例子 在VC下运行会有些跨平台的错误 我这里有做修改 稍后会发布出来 相关的代码与库  http://download.zeromq.org ...

  2. 网络编程之python zeromq学习系列之一

    简介: zeromq中间件,他是一个轻量级的消息中间件,传说是世界上最快的消息中间件,为什么这么说呢? 因为一般的消息中间件都需要启动消息服务器,但是zeromq这厮尽然没有消息服务器,他压根没有消息 ...

  3. zeromq 学习和python实战

    参考文档: 官网 http://zeromq.org/ http://www.cnblogs.com/rainbowzc/p/3357594.html   原理解读 zeromq只是一层针对socke ...

  4. zeromq学习记录(六)C语言示例

    考虑到官方的示例c语言是最多的 官方未使用C++语言演示的例子就使用VC编译C语言例子 记录在此 /************************************************** ...

  5. zeromq学习记录(三)使用ZMQ_PULL ZMQ_PUSH

    /************************************************************** 技术博客 http://www.cnblogs.com/itdef/   ...

  6. zeromq学习笔记2——简单的客户端和服务端测试程序

    1.前言 zeromq提供了guide,http://zguide.zeromq.org/,可以帮助新手快速上手,提供了C\C++\PHP等多种语言. 2.测试程序 使用zeromq给的hwserve ...

  7. zeromq学习笔记1——centos下安装 zeromq-4.1.2

    1.前言 MQ(message queue)是消息队列的简称,可在多个线程.内核和主机盒之间弹性伸缩.ZMQ的明确目标是“成为标准网络协议栈的一部分,之后进入Linux内核”.现在还未看到它们的成功. ...

  8. zeromq学习记录(二)天气更新服务器使用ZMQ_SUB ZMQ_PUB

    /************************************************************** 技术博客 http://www.cnblogs.com/itdef/   ...

  9. zeromq学习记录(九)练习代码学习ZMQ_ROUTER ZMQ_READLER

    /************************************************************** 技术博客 http://www.cnblogs.com/itdef/   ...

随机推荐

  1. php fpm深度解析

    摘自:https://www.cnblogs.com/wanghetao/p/3934350.html 当我们在谈到cgi的时候,我们在讨论什么 最早的Web服务器简单地响应浏览器发来的HTTP请求, ...

  2. 微信公众号开发之如何一键导出微信所有用户信息到Excel

    微信开发交流群:148540125 系列文章参考地址 极速开发微信公众号欢迎留言.转发.打赏 项目源码参考地址 点我点我--欢迎Start 极速开发微信公众号系列文章之如何一键导出微信所有用户信息到E ...

  3. 无法安装Java,以下开关中存在错误:“0”

    无法安装Java,以下开关中存在错误:“0”:. 解决方法:以管理员运行

  4. USART相关问题

    最近发现一个FT232+stm32的USB转串口问题,不能理解,记录下来. PC和STM32通讯,USB-B连接,连接方式如下所示: 上图为USB口引出USB_N/USB_P/USB_EN三个PIN脚 ...

  5. 封装一个简单的原生js焦点轮播图插件

    轮播图实现的效果为,鼠标移入左右箭头会出现,可以点击切换图片,下面的小圆点会跟随,可以循环播放(为了方便理解,没有补2张图做无缝轮播).本篇文章的主要目的是分享封装插件的思路. 轮播图我一开始是写成非 ...

  6. 微信小程序绑定数据(微信小程序交流群:604788754)

    在小程序开发中,用js绑定数据时,明明没报错,但页面没有显示绑定的数据内容.这有可能是相对应的js绑定数据的一些变量名字的问题.遇到这种情况.可以从新建立一个新的demo页面.把问题页面相对应的js. ...

  7. PHP:第一章——按位运算和求余运算(判断奇偶数)

    <?php //按位运算:与1按位运算等于0,输出偶数.如果等于1,输出奇数 //输出偶数: for($i=0;$i<10;$i++){ if(($i & 1)==0){ echo ...

  8. 【译】MVC3 20个秘方-(15)使用CAPTCHA去防止恶意软件自动提交评论(防灌水)

    [译]MVC3 20个秘方-(15)使用CAPTCHA去防止恶意软件自动提交评论(防灌水)   问题 有种不太幸运的情况,有人用自动程序去提交表单,在整个互联网中造成大量的垃圾.为了防止这种情况的方法 ...

  9. bzoj3040

    题解: 模板题,地界特斯拉+堆优化 注意第一种建边 代码: #include<bits/stdc++.h> using namespace std; typedef long long l ...

  10. 模拟QQ分组(具有伸缩功能) (添加开源框架的光闪烁效果)SimpleExpandableListAdapter 适配器的用法,并且可添加组及其组内数据。

    package com.lixu.qqfenzu; import java.util.ArrayList; import java.util.HashMap; import java.util.Lis ...