RPC版 “Hello World”

Go语言的RPC包的路径为net/rpc,也就是放在了net包目录下面。因此我们可以猜测该RPC包是建立在net包的基础之上的 。

  1. 我们首先构造一个HelloService类型,其中的Hello()方法用于实现打印功能:

    其中的Hello()方法必须满足Go语言的RPC规则 :方法只能有两个可序列化的参数,其中第二个参数是指针类型,并且返回一个error类型,同时必须是公开的方法。
  2. 然后就可以将HelloService类型的对象注册为一个RPC服务:

    其中rpc.RegisterName()函数会将对象类型中的所有满足RPC规则的对象方法注册为RPC函数,所有注册的函数会放在HelloService服务的空间之下。然后建立一个唯一的TCP链接,并通过rpc.ServeConn()函数在该TCP链接上为对方提供RPC服务。
  3. 下面是客户端请求HelloService服务的代码:

    首先通过rpc.Dial拨号RPC服务,然后通过client.Call()调用具体的RPC方法。在调用client.Call()时,第一个参数是用点号链接服务名字和方法名字,第二个和第三个参数分别是定义RPC方法的两个参数。
  4. 先运行服务端,再运行客户端,执行结果:
原文地址:https://www.cnblogs.com/pangqianjin/p/14615987.html