zeromq学习之-1.简介和使用

1.zeromq简介

zeromq看起来像一个嵌入式网络库,工作起来却像一个并发性(concurrency)框架。

Its asynchronous I/O model gives you scalable multicore applications,built as asynchronous message-processing tasks.

它的异步I/O模型可以让一个可伸缩的多核应用程序,构建为异步消息处理任务。

zeromq代码示例: https://github.com/imatix/zguide/tree/master/examples/

2.如何使用Zeromq

ZMQ_REP类型的套接字被服务端用来接收户端的请求并进行回复。


#include "stdafx.h"
#include <zmq.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
#ifndef _WIN32
#include <unistd.h>
#else
#include <windows.h>
#endif

int main (void)
{
    //  
    void *context = NULL;
	//创建上下文,ZMQ 环境上下文是是线程安全的
	//可以尽可能多的被应用线程共享使用,而且不需要在调用端添加线程锁
	if ((context=zmq_ctx_new ())==NULL)
	{
		return 0;
	}
    void *responder = zmq_socket (context, ZMQ_REP);
    int rc = zmq_bind (responder, "tcp://*:5555");
    assert (rc == 0);

    while (1) {
		zmq_msg_t request;
		//msg参数引用的ZMQ消息对象进行初始化,使其成为一个空消息
		rc=zmq_msg_init(&request);
		assert (rc == 0);
		 //从一个socket中接受一个消息帧
		zmq_msg_recv(&request,responder,0);
        printf ("Received Hello\n");
		zmq_msg_close(&request);

		//  Do some 'work'
        Sleep (1);   
		
		zmq_msg_t reply;
		//使用一个指定的空间大小初始化ZMQ消息对象
		zmq_msg_init_size(&reply,5);
		memcpy(zmq_msg_data(&reply),"world",5);
		zmq_msg_send(&reply,responder,0);
		zmq_msg_close(&reply);
    }
	zmq_close(responder);
	zmq_ctx_destroy(context);
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haimianjie2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值