2025-02-16 11:41:36 +08:00

51 lines
1.1 KiB
Go

package main
import (
"net"
"net/rpc"
"gitlab.com/go-course-project/go17/skills/rpc/hello_world/service"
)
var _ service.HelloService = (*HelloServiceServer)(nil)
// 实现业务功能
// req := &HelloRequest{}
// resp := &HelloResponse{}
// err := &HelloServiceServer{}.Hello(req, resp)
// net/rpc
// 1. 写好的对象, 注册给RPC Server
// 2. 再把RPC Server 启动起来
type HelloServiceServer struct {
}
// HTTP Handler
func (h *HelloServiceServer) Hello(request *service.HelloRequest, response *service.HelloResponse) error {
response.Message = "hello:" + request.MyName
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", &HelloServiceServer{}); 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)
}
}