golang rpc服务端及客户端编写示例

服务端实现

  1. 定义一个可以远程调用的结构体和相关的方法:
type Arith int

func (t *Arith) Multiply(args *Args, reply *int) error {
    *reply = args.A * args.B
    return nil
}
  1. 实例化一个RPC服务器:
arith := new(Arith)
rpc.Register(arith)
rpc.HandleHTTP()
  1. 监听HTTP连接:
l, e := net.Listen("tcp", ":1234") // 监听1234端口
if e != nil {
    log.Fatal("listen error:", e)
}

for {
    http.Serve(l, nil)
}

客户端实现

  1. 连接到RPC服务端:
client, err := rpc.DialHTTP("tcp", "127.0.0.1:1234") // 连接到服务端IP的1234端口
if err != nil {
    log.Fatal("dialing:", err)
}
  1. 调用远程的方法并获取结果:
// 测试Multiply方法
args := &Args{7, 8}
var reply int
err = client.Call("Arith.Multiply", args, &reply)
if err != nil {
    log.Fatal("arith error:", err)
}
fmt.Printf("Arith: %d*%d=%d", args.A, args.B, reply)

你可能感兴趣的:(golang,rpc,开发语言)