我创建了一个新的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兼容许可获得许可。
如果您使用此库并发现它有用,如果您让我知道,我会很高兴。