C使用zeromq完成有意义的通讯
本文尝试使用zeromq完成一项简单的网络传送任务。
(小白使用开源共享库 (C使用zeromq) 该篇已经完成了一个简单的可运行的基本程序,本篇基于此改造而来)
main.c修改后的内容如下:
#include "zhelpers.h" int main (void) { void *context = zmq_init (1); // Socket to talk to clients void *responder = zmq_socket (context, ZMQ_REP); zmq_bind(responder, "tcp://*:5559"); while (1) { // Wait for next request from client char *string = s_recv (responder); printf ("Received request: [%s]\n", string); free (string); // Do some 'work' sleep (1); // Send reply back to client s_send (responder, "World"); } // We never get here but clean up anyhow zmq_close(responder); zmq_term(context); return 0; }
当然我们还需要一个client.c来充当客户端,main.c同级目录下新建client.c。相同的道理,把client的编译信息也加进Makefile
// // Hello World client // Connects REQ socket to tcp://localhost:5559 // Sends "Hello" to server, expects "World" back // #include "zhelpers.h" int main (void) { void *context = zmq_init (1); // Socket to talk to server void *requester = zmq_socket (context, ZMQ_REQ); zmq_connect (requester, "tcp://localhost:5559"); int request_nbr; for (request_nbr = 0; request_nbr != 10; request_nbr++) { s_send (requester, "Hello"); char *string = s_recv (requester); printf ("Received reply %d [%s]\n", request_nbr, string); free (string); } zmq_close (requester); zmq_term (context); return 0; }
这是zeromq官网上找到的代码,原来可能有点小小的问题,经过稍加改造可以顺利运行。原文在这里
https://github.com/imatix/zguide/blob/master/examples/C/rrserver.c
https://github.com/imatix/zguide/blob/master/examples/C/rrclient.c
注意程序中用到了一个zhelpers.h头文件,那个文件在官网上也是有的。有需要的话,不妨自己找找看 ^_^。
纹丝不动拷贝到include 中,回到app一个make搞定。
启动两个putty,一个跑main另一个跑client可以看到效果如下。
总结一下吧
1 短短的几行代码就能完成基本的socket通讯,zmq的强大已经有所体现。
2 开源真是个好东西,快乐源于分享。
己有能 勿自私 人所能 勿轻訾
jogger0703@gmail.com
分类:
Linux小白系列
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述