• zeroMQ 学习


    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…. ");
            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 ", 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 ", 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… ");
        for(;;) {
        zmq_msg_t request;
        zmq_msg_init(&request);
        zmq_msg_recv(&request, respond, 0);
        printf("Received: hello ");
        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 也比较好用。

  • 相关阅读:
    Centos安装VMware
    centos7下javac:未找到命令的问题
    Runtime
    JVM构架、GC垃圾回收机制的理解
    onsubmit校验表单时利用ajax的return false无效解决方法
    request和response的中文乱码问题
    Ajax,Json数据格式
    Oracle数据库对象,同义词、序列、视图、索引
    动态页面技术JSP/EL/JSTL
    会话技术Cookie&Session
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/3490893.html
Copyright © 2020-2023  润新知