golang實現(xiàn)rpc遠程調(diào)用的server端和client端范例2018-06-12

定義rpc調(diào)用的方法

package library

type Watcher intfunc (w *Watcher) GetInfo(arg int,result *int) error{? ? *result = 1? ? return nil}

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 服務器端代碼

package mainimport(? ? "fmt"? ? "net"? ? "net/rpc"? ? "net/http"? ? "library")func main(){? ? watcher := new(library.Watcher)? ? rpc.Register(watcher)? ? rpc.HandleHTTP()? ? l,err := net.Listen("tcp", ":1234")? ? if err != nil{? ? ? ? fmt.Println("監(jiān)聽失敗,端口可能已經(jīng)被占用")? ? }? ? fmt.Println("正在監(jiān)聽1234端口")? ? http.Serve(l,nil)}

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 客戶端代碼

package mainimport (? ? "fmt"? ? "net/rpc")func main(){? ? client,err := rpc.DialHTTP("tcp", "127.0.0.1:1234")? ? if err !=nil{? ? ? ? fmt.Println("鏈接rpc服務器失敗:",err)? ? }? ? var reply int? ? err = client.Call("Watcher.GetInfo", 1, &reply)? ? if err!=nil{? ? ? ? fmt.Println("調(diào)用遠程服務失敗",err)? ? }? ? fmt.Println("遠程服務返回結果:", reply)}

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 客戶端調(diào)用后,如果正常會返回 1;

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容