我創建了一個新的C ++ 17標頭實現 - > JSON-RPC-CXX。
掌握
該框架為C ++提供了跨平台JSON-RPC(遠程過程調用)支持。它是完全兼容的JSON-RPC 2.0&1.0。

在下一個RPC項目中使用libjson-rpc-cpp的5個充分理由
使用libjson-rpc-cpp的其他好理由
make test進行自動測試。
Debian(拉伸)和Ubuntu(15.10或更高版本)
sudo apt-get install libjsonrpccpp-dev libjsonrpccpp-tools軟呢帽
sudo dnf install libjson-rpc-cpp-devel libjson-rpc-cpp-toolsArch Linux
對於Arch Linux,AUR中提供了PKGBuild。
sudo aura -A libjson-rpc-cppGentoo Linux
sudo emerge dev-cpp/libjson-rpc-cppMac OS X
對於OS X,可以提供Brew套件:
brew install libjson-rpc-cpp視窗
這裡準備在這裡使用編譯包。只需下載執行安裝程序EXE即可。
Unix
對於基於Debian和Arch GNU/Linux系統,所有依賴項均可通過軟件包管理器獲得。對於OS X,所有依賴項都可以在Brew中提供
git clone https://github.com/cinemast/libjson-rpc-cpp.git
mkdir -p libjson-rpc-cpp/build
cd libjson-rpc-cpp/build
cmake .. && make
sudo make install
sudo ldconfig # only required for linux就是這樣!
如果您對此不滿意,只需使用(在構建目錄內)從系統中卸載它:
sudo make uninstall構建選項:
默認配置對於大多數係統應該很好,但是這裡有可用的彙編標誌:
-DCOMPILE_TESTS=NO禁用單元測試套件。-DCOMPILE_STUBGEN=NO禁用構建固定劑。-DCOMPILE_EXAMPLES=NO禁用示例。-DHTTP_SERVER=NO禁用libmicrohttpd Web服務器。-DHTTP_CLIENT=NO禁用curl客戶端。-DREDIS_SERVER=NO禁用redis服務器連接器。-DREDIS_CLIENT=NO禁用redis客戶端連接器。-DUNIX_DOMAIN_SOCKET_SERVER=YES啟用Unix域套接字服務器連接器。-DUNIX_DOMAIN_SOCKET_CLIENT=YES啟用Unix域套接字客戶端連接器。-DFILE_DESCRIPTOR_SERVER=NO禁用文件描述符連接器。-DFILE_DESCRIPTOR_CLIENT=NO禁用文件描述符客戶端連接器。-DTCP_SOCKET_SERVER=NO禁用TCP套接字服務器連接器。-DTCP_SOCKET_CLIENT=NO禁用TCP套接字客戶端連接器。此示例將顯示創建RPC服務器和客戶端的最簡單方法。如果您只需要服務器,請忽略步驟4。如果您只需要客戶端,請忽略步驟3。您可以在此存儲庫的src/examples目錄中找到此示例的所有資源。
[
{
"name" : " sayHello " ,
"params" : {
"name" : " Peter "
},
"returns" : " Hello Peter "
},
{
"name" : " notifyServer "
}
]返回值或參數的類型由分配給其的文字定義。生成的存根將使用“返回”類型來驗證響應。在此示例中,您可以看到如何指定方法和通知。
致電JSONRPCSTUB:
jsonrpcstub spec.json --cpp-server=AbstractStubServer --cpp-client=StubClient
mkdir -p gen
mv abstractstubserver.h gen
mv stubclient.h gen這會生成一個AbstractStubServer和一個StubClient類,並將其移至gen文件夾。
擴展抽象服務器存根並實現spec.json中定義的所有純虛擬(摘要)方法。
請參閱SRC/示例/stubserver.cpp
在主函數中,混凝土服務器是實例化並啟動的。這全都適合服務器。現在,任何符合JSON RPC 2.0的客戶端都可以連接到您的服務器。
用以下方式編譯服務器
g++ stubserver.cpp -ljsoncpp -lmicrohttpd -ljsonrpccpp-common -ljsonrpccpp-server -o sampleserver請參閱SRC/示例/stubclient.cpp
用以下方式編譯客戶
g++ stubclient.cpp -ljsoncpp -lcurl -ljsonrpccpp-common -ljsonrpccpp-client -o sampleclient請看一下貢獻.md
您也可以通過
可以在此處找到變更子。
我們會盡力保持API/ABI穩定,以防止更新此框架時問題。可以在此處找到兼容性報告。
該框架是在MIT下獲得許可的。所有這些圖書館依賴項均根據MIT兼容許可獲得許可。
如果您使用此庫並發現它有用,如果您讓我知道,我會很高興。