Ai
66 Star 403 Fork 484

infraboard/go-course

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
main.go 1.12 KB
一键复制 编辑 原始数据 按行查看 历史
Mr.Yu 提交于 2022-01-14 22:40 +08:00 . 补充grpc认证中间件
package main
import (
"fmt"
"log"
"net"
"net/rpc"
"gitee.com/infraboard/go-course/day15/pbrpc/codec/client"
"gitee.com/infraboard/go-course/day15/pbrpc/service"
)
// 约束客户端
var _ service.HelloService = (*HelloServiceClient)(nil)
type HelloServiceClient struct {
*rpc.Client
}
func DialHelloService(network, address string) (*HelloServiceClient, error) {
// c, err := rpc.Dial(network, address)
// if err != nil {
// return nil, err
// }
// 建立链接
conn, err := net.Dial("tcp", "localhost:1234")
if err != nil {
log.Fatal("net.Dial:", err)
}
// 采用Json编解码的客户端
c := rpc.NewClientWithCodec(client.NewClientCodec(conn))
return &HelloServiceClient{Client: c}, nil
}
func (p *HelloServiceClient) Hello(req *service.Request, resp *service.Response) error {
return p.Client.Call(service.HelloServiceName+".Hello", req, resp)
}
func main() {
client, err := DialHelloService("tcp", "localhost:1234")
if err != nil {
log.Fatal("dialing:", err)
}
resp := &service.Response{}
err = client.Hello(&service.Request{Value: "alice"}, resp)
if err != nil {
log.Fatal(err)
}
fmt.Println(resp)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/infraboard/go-course.git
git@gitee.com:infraboard/go-course.git
infraboard
go-course
go-course
b9cb7f36b0ee

搜索帮助