概述
jsonrpc代理主要用于同一主机不同进程间通信,只需要编写配置文件,就能生成两个接口用于两个进程通信。
注:使用该功能必须先安装jsonrpc库,该库依赖于jsoncpp,同时需要安装scons与cmake。
编写环境:Linux操作系统,C++语言,G++编译器
编写配置文件,配置文件是json格式,例子:
[
{
"name": "Connectser",
"returns": "Connectser responce data Json string"
},
{
"name": "Connecttest",
"params": {
"canshu": "Connecttest data Json string"
},
"returns": "Connecttest responce data Json string"
}
]
这个例子写了两对接口,第一个接口函数名为Connectser,返回值是string类型,没有参数。
第二个接口函数名为Connecttest,有一个参数,参数名为canshu,参数类型为string,返回值为string类型。
编写完成后在命令行输入
jsonrpcstub (配置文件名) --cpp-server=(生成接收端文件名) --cpp-client=(生成发送端文件名)
比如创建的json文件名为test,需要生成接收端为AbsSerStuSer,发送方为UIStuCli
jsonrpcstub test.json --cpp-server=AbsSerStuSer --cpp-client=UIStuCli
就能生成absserstuser.h与uistucli.h两个头文件,需要通信的两个进程分别调用这两个头文件便能进行通信。
接收方编写:
头文件中需要添加<jsonrpccpp/client/connectors/httpclient.h>
与<jsonrpccpp/client/connectors/htpserver.h>头文件
同时也需要添加刚才生成的<absserstuser.h>头文件
并声明
using namespace jsonrpc;
创建相应的类
class ServStubServer : public AbsSerStuSer {
public :
ServStubServer(AbstractServerConnector &connector): AbsSerStuSer(connector)
{}
virtual std::string Connectser();
virtual std::string Connecttest(const std::string& canshu);
};
创建完成后在需要接收的类中public下添加
HttpServer *hs; //用于添加监听用端口号
ServStubServer *_lpRpcServer;
在该类的构造函数中添加
hs = new HttpServer(8363); //监听端口为8363
_lpRpcServer = new ServStubServer(*hs);
_lpRpcServer->StartListening(); //开始监听,等待发送方发送消息
添加实现功能函数(具体功能为写出,需根据需求自己编写)
string ServStubServer::Connectser();
string ServStubServer::Connecttesr(const string &canshu);
发送方编写:
头文件中需要添加<jsonrpccpp/client/connectors/httpclient.h>
与<jsonrpccpp/client/connectors/htpserver.h>头文件
同时也需要添加刚才生成的<uistucli.h>头文件
还需添加<iostream>头文件
另在需要发送数据的类中public下添加发送函数
string Connectser() throw(jsonrpc::JsonRpcException);
(此处函数名参数之类的可自己更改)
string Connecttest(const std::string& canshu) throw (jsonrpc::JsonRpcException);
实现发送函数(该函数可自己编写,红色的部分是必须存在的):
string Connectser() throw(jsonrpc::JsonRpcException)
{
HttpClient httpclient("http://localhost:8363"); //设定发送用端口
httpclient.SetTimeout(3000); //设置超时时间,3秒。
UIStuCli c(httpclient);
string strJson = c.Connectser(); //strJson用于接收接收方返回值,Connectser是发送函数
return strJson; //将得到的结果返回
}
string Connecttest(const std::string& canshu) throw (jsonrpc::JsonRpcException)
{
HttpClient httpclient("http://localhost:8363"); //设定发送用端口
httpclient.SetTimeout(3000);
UIStuCli c(httpclient);
string strJson = c.Connecttest(canshu);
return strJson; //将得到的结果返回
}
最后
以上就是幸福老师为你收集整理的JsonRpc的基础用法的全部内容,希望文章能够帮你解决JsonRpc的基础用法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复