服务端
type Student int
func main() {
rpc.Register(new(Student)) //注册RPC服务, 默认的名字是对象的类型名字, 如果需要指定特殊的名字, 可以用 rpc.RegisterName 进行注册.
rpc.HandleHTTP() //指定 RPC 的传输协议, 这里是采用 http 协议作为RPC调用的载体
l, e := net.Listen("tcp", ":1234")
if e != nil {
//log.Fatal("listen error:", e)
fmt.Println(e)
}
http.Serve(l, nil)
}
func (t *Student) Hi(args string, reply *string) error {
*reply = "测试rpc服务:" + args
return nil
}
客户端
func TestMain1(t *testing.T) {
client, err := rpc.DialHTTP("tcp", "127.0.0.1:1234")。
if err != nil {
fmt.Println("dialing:", err)
}
var args = "hello rpc"
var reply string
err = client.Call("Student.Hi", args, &reply)
if err != nil {
fmt.Println("error:", err)
}
fmt.Println("输出rpc: ", reply)
}
输出:
=== RUN TestMain1
输出rpc: 测试rpc服务:hello rpc
--- PASS: TestMain1 (0.00s)
PASS
Process finished with exit code 0