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….\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 也比较好用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)