GO语言实现一个JSON格式的rpc

GO语言实现一个JSON格式的rpc


结构

image.png

服务端代码

package main

import (
   "fmt"
   "net"
   "net/rpc"
   "net/rpc/jsonrpc"
)

type HelloServer struct {
}

func (p *HelloServer) Hello(request string, reply *string) error {
   *reply = fmt.Sprintf("Hello %s", request)
   return nil
}
func main() {
   listen, _ := net.Listen("tcp", ":1234")
   _ = rpc.RegisterName("HelloServer", &HelloServer{})

   for {
      conn, _ := listen.Accept()
      go rpc.ServeCodec(jsonrpc.NewServerCodec(conn))
   }
}


客户端代码

package main

import (
   "fmt"
   "net"
   "net/rpc"
   "net/rpc/jsonrpc"
)

func main() {
   conn, err := net.Dial("tcp", "localhost:1234")
   if err != nil {
      fmt.Println("连接失败", err)
      return
   }
   var reply string
   client := rpc.NewClientWithCodec(jsonrpc.NewClientCodec(conn))
   err = client.Call("HelloServer.Hello", "张三", &reply)
   if err != nil {
      fmt.Println("调用失败", err)
      return
   }

   fmt.Println(reply)
}


最后编辑于:2022/01/08作者: 牛逼PHP

发表评论