rpc 包提供了一個方法來通過網絡或者其他的I/O連接進入對象的外部方法. 一個server注冊一個對象, 標記它成為可見對象類型名字的服務。注冊后,對象的外部方法就可以遠程調用了。一個server可以注冊多個 不同類型的對象,但是卻不可以注冊多個相同類型的對象。
只有滿足這些標準的方法才會被遠程調用視為可見;其他的方法都會被忽略:
- 方法是外部可見的。
- 方法有兩個參數,參數的類型都是外部可見的。
- 方法的第二個參數是一個指針。
- 方法有返回類型錯誤
一、基于http的RPC
服務端:
package main; import ( "net/rpc" "net/http" "log" ) //go對RPC的支持,支持三個級別:TCP、HTTP、JSONRPC //go的RPC只支持GO開發(fā)的服務器與客戶端之間的交互,因為采用了gob編碼 //注意字段必須是導出 type Params struct { Width, Height int; } type Rect struct{} //函數必須是導出的 //必須有兩個導出類型參數 //第一個參數是接收參數 //第二個參數是返回給客戶端參數,必須是指針類型 //函數還要有一個返回值error func (r *Rect) Area(p Params, ret *int) error { *ret = p.Width * p.Height; return nil; } func (r *Rect) Perimeter(p Params, ret *int) error { *ret = (p.Width + p.Height) * 2; return nil; } func main() { rect := new(Rect); //注冊一個rect服務 rpc.Register(rect); //把服務處理綁定到http協議上 rpc.HandleHTTP(); err := http.ListenAndServe(":8080", nil); if err != nil { log.Fatal(err); } }
另外有需要云服務器可以了解下創(chuàng)新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
文章題目:go語言net包rpc遠程調用的使用示例-創(chuàng)新互聯
網頁URL:http://jinyejixie.com/article46/djcghg.html
成都網站建設公司_創(chuàng)新互聯,為您提供關鍵詞優(yōu)化、動態(tài)網站、建站公司、網站內鏈、定制開發(fā)、標簽優(yōu)化
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯