server
type HelloService struct{}
func (h *HelloService) SayHi(greeting string, reply *string) error {
*reply = "Hello, " + greeting
return nil
}
func main() {
// 1.实例化一个server
listener, _ := net.Listen("tcp", ":8080")
// 2.注册处理逻辑
_ = rpc.RegisterName("HelloService", &HelloService{})
// 3.启动服务
for {
conn, _ := listener.Accept() // 这个方法只监听一次
rpc.ServeConn(conn)
}
}
client
func main() {
// 1.建立连接
client, _ := rpc.Dial("tcp", ":8080")
// 2.调用方法
var reply string
err := client.Call("HelloService.SayHi", "Felix", &reply)
if err != nil {
panic("远程调用失败")
}
fmt.Println("reply: ", reply)
}