JsonRpc的基礎用法

2021-08-15 11:19:30 字數 2071 閱讀 6052

jsonrpc**主要用於同一主機不同程序間通訊,只需要編寫配置檔案,就能生成兩個介面用於兩個程序通訊。

注:使用該功能必須先安裝jsonrpc庫,該庫依賴於jsoncpp,同時需要安裝scons與cmake。

編寫環境:linux作業系統,c++語言,g++編譯器

編寫配置檔案,配置檔案是json格式,例子:[

, ,

"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兩個標頭檔案,需要通訊的兩個程序分別呼叫這兩個標頭檔案便能進行通訊。

接收方編寫:

標頭檔案中需要新增

與標頭檔案

同時也需要新增剛才生成的標頭檔案

並宣告

using namespace jsonrpc;

建立相應的類

class servstubserver : public absserstuser

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);

傳送方編寫:

標頭檔案中需要新增

與標頭檔案

同時也需要新增剛才生成的標頭檔案

還需新增標頭檔案

另在需要傳送資料的類中public下新增傳送函式

string connectser() throw(jsonrpc::jsonrpcexception);

(此處函式名引數之類的可自己更改)

string connecttest(const std::string& canshu) throw (jsonrpc::jsonrpcexception);

實現傳送函式(該函式可自己編寫,紅色的部分是必須存在的):

string connectser() throw(jsonrpc::jsonrpcexception)

string connecttest(const std::string& canshu) throw (jsonrpc::jsonrpcexception)

ThinkPHP內建jsonRPC的缺陷分析

最近在開發ios應用,要開發ios應用,當然要用到伺服器,用伺服器必然要選用遠端呼叫協議,因為之前本人一直都是用php開發的,所以選用thinkphp當框架的apache伺服器.至於遠端呼叫協議,經過思考,還是選用jsonrpc吧,比較簡單方便,翻了一下thinkphp 是3.2版本 的手冊,發現t...

基於php的json rpc原理及應用

json rpc 是一種以json為訊息格式的遠端呼叫服務,它是一套允許執行在不同作業系統 不同環境的程式實現基於internet過程呼叫的規範和一系列的實現。這種 遠端過程呼叫 可以使用 作為傳輸協議 也可以使用其它傳輸協議,傳輸的內容是json訊息體。下面我們code一套基於php的rpc框架,...

NSKeyedArchiver的基礎用法

如下 cpp view plain copy print?nsstring str abc nsstring astr efg nsarray array nsarray arraywithobjects str,astr,nil 儲存資料 nskeyedarchiver archiverootob...