package main import ( "net" "net/rpc" ) // 实现业务功能 // req := &HelloRequest{} // resp := &HelloResponse{} // err := &HelloServiceImpl{}.Hello(req, resp) // net/rpc // 1. 写好的对象, 注册给RPC Server // 2. 再把RPC Server 启动起来 type HelloServiceImpl struct { } type HelloRequest struct { MyName string `json:"my_name"` } type HelloResponse struct { Message string `json:"message"` } // HTTP Handler func (h *HelloServiceImpl) Hello(request *HelloRequest, response *HelloResponse) error { // *response = "hello:" + request return nil } func main() { // 1. 把业务 注册给RPC // 2. RPC 业务RPC必须是满足条件的接口: (req any, req any) error // Hello(request *HelloRequest, response *HelloResponse) error if err := rpc.RegisterName("HelloService", &HelloServiceImpl{}); err != nil { panic(err) } // 启动RPC服务 listener, err := net.Listen("tcp", ":1234") if err != nil { panic(err) } defer listener.Close() for { conn, err := listener.Accept() if err != nil { continue } // 用户的net层数据 转交给 rpc框架 go rpc.ServeConn(conn) } }