定義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;