zoukankan      html  css  js  c++  java
  • 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 也比较好用。

  • 相关阅读:
    flutter开发dart基本数据类型与java、kotlin、oc、swift对照表
    flutter输入框TextField设置高度以及背景色等样式的正确姿势
    flutter开发tab页面嵌套滚动的最简洁实现方式
    flutter开发自定义ExpandListView分组列表组件
    RedisUtil-redisTemplate-setNX
    数据库无限层级分类设计
    魔方
    CountDownLatch在SpringBoot中配合@Async使用
    会话刷新Token校验流程
    Mybatis 夺命十八问,顶不住了!
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/3490893.html
Copyright © 2011-2022 走看看