[C] nanomsg Hello World!

前言

nanomsg的前身是ZeroMQ。本人也是先接触到ZeroMQ,毕竟ZeroMQ相关资源丰富,较易上手。官方提供了很好的解释两者之间的差异(Differences between nanomsg and ZeroMQ)。

无痛从ZeroMQ转换至nanomsg

由于nanomsg的sample code整理较少,故引用ZeroMQ範例,并改成nanomsg。

//  Hello World server#include <stdio.h>#include <thread>#include "nn.h"#include "reqrep.h"int main(void){int responder = nn_socket(AF_SP, NN_REP);int rc = nn_bind(responder, "tcp://127.0.0.1:5555");if (rc < 0) exit(1);while (1) {char *buffer = NULL;nn_recv(responder, &buffer, NN_MSG, 0);printf("Received %s\n", buffer);nn_freemsg(buffer);std::this_thread::sleep_for(std::chrono::milliseconds(1));nn_send(responder, "World", 5, 0);}return 0;}
//  Hello World client#include <stdio.h>#include "nn.h"#include "reqrep.h"int main(void){printf("Connecting to hello world server\n");int requester = nn_socket(AF_SP, NN_REQ);int rc = nn_connect(requester, "tcp://127.0.0.1:5555");for (int i = 0;; ++i) {char *buffer = NULL;printf("Sending Hello %d\n", i);nn_send(requester, "Hello", 5, 0);nn_recv(requester, &buffer, NN_MSG, 0);printf("Received %s %d\n", buffer, i);        nn_freemsg(buffer);}nn_close(requester);return 0;}

比较后可以发现,API其实很好置换。

ZeroMQnanomsgzmq_socketnn_socketzmq_bindnn_bindzmq_connectnn_connectzmq_sendnn_sendzmq_recvnn_recvzmq_closenn_closezmq_ctx_new-zmq_ctx_destroy-

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章