C 語言 Sun Remote Procedure Call in FreeBSD
強烈推薦先看此文章了解 RPC ,粘添壽老師的書 9–1 RPC 簡介
簡介
RPC 為低階網路 (Socket) 的高階界面,讓其他人呼叫程式就像呼叫本地端的程式一樣,一個程式對應一個功能,像是查詢、刪除資料庫,都可以各自調用一個程式。
RPC 在傳遞參數給另外一個程式時,參數的表示法有規範,常見像是 eXternal Data Representation (XDR) or ASN.1,所以在發送的時候會先 encode,client 收到在 decode。
傳統使用 TS-RPC (Transport-Specific Remote Procedure Call)),也就是你在呼叫跟設定 RPC 時都要指定特定的傳輸網路,像是 tpc, udp,使用 portmap 來對應 port and procedure,但靈活性比較低,有新的協定時就要從新在寫程式。
TI-RPC 則比較靈活,它是將有關網路上的伺服器、服務程式、網路位址、傳輸埠口等等都宣告成符號層次(Symbolic Level)(LINK),使用 rpcbind 來管理,靈活性較高,建議使用此函式。
RPC 由一群 procedure 組成,每個 procedure 都有 nubmer ,一整個 procedure 就叫做 program,同樣也有 number,program 也會有 versione nubmer。
Sun 有提供 rpcgen 根據規格自動產生『伺服基礎檔』(Server Stub)和『客戶基礎檔』(Client Stub),並依照選項(Option)來產 生認證(Authentication)交換檔和資料表示檔(XDR)(RFC 1014)(LINK)。
TI-RPC 函式
從上層到下層基本上有以下函式
TS-RPC 函式以及代替品
…