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 也比較好用。
總結
- 上一篇: IIS企业案例系列之七:发布Exchan
- 下一篇: Android菜鸟的成长笔记(5)——A