RPC 服务器

    RPCserver.go的第一部分如下:

    RPCserver.go 的第二部分代码如下:

    1. type MyInterface struct {}
    2. func Power(x, y float64) float64 {
    3. return math.Pow(x, y)
    4. }
    5. func (t *MyInterface) Multiply(arguments *sharedRPC.MyFloats, reply * float64) error {
    6. *reply = arguments.A1 * argumentsA2
    7. return nil
    8. *reply = Power(arguments.A1, arguments.A2)
    9. return nil
    10. }

    RPCserver.go 的第三段如下:

    RPCserver.go 的第四部分代码如下:

    1. myInterface := new(MyInterface)
    2. rpc.Register(myInterface)
    3. t, err := net.ResolveTCPAddr("tcp4", PORT)
    4. if err != nil {
    5. return
    6. }
    7. if err != nil {
    8. fmt.Println(err)
    9. return
    10. }

    RPCserver.go的其余代码如下:

    RemoteAddr() 函数返回接入的 RPC 客户端 IP 地址和端口。rpc.ServerConn() 函数为 RPC 客户端提供服务。

    1. $ go run RPCserver.go

    执行 RPCclient.go 将产生如下输出: