C++的網絡庫一般都很重,這裏基於zmq這個高性能的開源消息中間件用C++和python寫了一個客戶端/服務器互相異步通信的rpc組件
代碼
github:https://github.com/tashaxing/LittleRpc
其中:
- 用的是zmq的router和dealer異步模式
- 支持請求/應答和推送
- src/cpp目錄的
little_rpc.h
和little_rpc.cpp
是C++實現的rpc庫,可以include進自己的項目,注意鏈接zmq的庫 - src/cpp目錄的
little_rpc.py
是python實現的rpc庫(只有client部分),可以import進自己的項目,注意需要先安裝zmq的包 - example目錄包含C++和python的使用示例
編譯
編譯器需要支持C++11
直接用cmake編譯(windows和linux雙平臺),可以運行C++和python的demo
使用
啓動一個server和兩個client(分別是C++版和python版)
相互通信運行結果如下
server
rpc server is listening on tcp://*:5000
receive rpc request, conn_id: cpp_client_1559123432513433500 req_data: request for lucky day
receive rpc request, conn_id: py_client_1559123437.01 req_data: request for happy life
publish to all clients
C++ client
connect to tcp://127.0.0.1:5000
send to server
on_msg_result: response to cpp_client_1559123432513433500 content: request for lucky day
on_msg_result: welcome to rpc server!
python client
connect to tcp://127.0.0.1:5000
send to server
on_msg_result: response to py_client_1559123437.01 content: request for happy life
on_msg_result: welcome to rpc server!