server

  1. type HelloService struct{}
  2. func (h *HelloService) SayHi(greeting string, reply *string) error {
  3. *reply = "Hello, " + greeting
  4. return nil
  5. }
  6. func main() {
  7. // 1.实例化一个server
  8. listener, _ := net.Listen("tcp", ":8080")
  9. // 2.注册处理逻辑
  10. _ = rpc.RegisterName("HelloService", &HelloService{})
  11. // 3.启动服务
  12. for {
  13. conn, _ := listener.Accept() // 这个方法只监听一次
  14. rpc.ServeConn(conn)
  15. }
  16. }

client

  1. func main() {
  2. // 1.建立连接
  3. client, _ := rpc.Dial("tcp", ":8080")
  4. // 2.调用方法
  5. var reply string
  6. err := client.Call("HelloService.SayHi", "Felix", &reply)
  7. if err != nil {
  8. panic("远程调用失败")
  9. }
  10. fmt.Println("reply: ", reply)
  11. }