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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haimianjie2012/article/details/80845034

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;
}


猜你喜欢

转载自blog.csdn.net/haimianjie2012/article/details/80845034