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

34 lines
742 B
Go

package service
import (
"net/rpc"
)
func NewClient(address string) (HelloService, error) {
conn, err := rpc.Dial("tcp", address)
if err != nil {
return nil, err
}
// buf := bytes.NewBuffer([]byte{})
// gob.NewEncoder(buf).Encode(HelloRequest{Name: "test"})
//
// reader := bytes.NewReader([]byte("{}"))
// resp := HelloRequest{Name: "test"}
// gob.NewDecoder(reader).Decode(&resp)
return &HelloServiceClient{conn: conn}, nil
}
// 要封装原始的 不友好的rpc call
type HelloServiceClient struct {
conn *rpc.Client
}
func (c *HelloServiceClient) Hello(request *HelloRequest, response *HelloResponse) error {
if err := c.conn.Call("HelloService.Hello", request, response); err != nil {
panic(err)
}
return nil
}