概述
安装
安装protobuf
go get -u github.com/golang/protobuf/proto
go get -u github.com/golang/protobuf/protoc-gen-go
命令执行会在GOPATH/bin目录下自动生成protoc-gen-go.exe可执行文件;
另外还需要一个proto.exe可执行文件,可以从https://github.com/google/protobuf/releases自行下载,同样放到GOPATH/bin目录下;
安装gRPC
go get -u google.golang.org/grpc
实例
目录结构
编写.proto文件
syntax = "proto3"; // proto版本package love; // 指定包名,默认go中包名也是这个option go_package = "love"; // 指定go包名// 定义Love服务service Love { // 定义Confession方法 rpc Confession(Request) returns (Response) {}}// 请求message Request { string name = 1;}// 响应message Response { string result = 1;}
编译生成.pb.go文件
$ cd test/gRPC/proto/love# 编译love.proto$ protoc -I . --go_out=plugins=grpc:. ./love.proto
实现服务端接口
package mainimport ( "context" "google.golang.org/grpc" "log" "net" "test/gRPC/proto/love")// 定义Love服务type Love struct {}// 实现Love服务接口func (l *Love) Confession(ctx context.Context, request *love.Request) (*love.Response, error) { resp := &love.Response{} resp.Result = "I love you " + request.Name return resp, nil}func main() { // 监听8888端口 listen, err := net.Listen("tcp", ":8888") if err != nil { log.Fatal(err) } // 实例化grpc server s := grpc.NewServer() // 注册Love服务 love.RegisterLoveServer(s, new(Love)) log.Println("Listen on 127.0.0.1:8888...") s.Serve(listen)}
实现客户端调用
package mainimport ( "context" "google.golang.org/grpc" "log" "test/gRPC/proto/love")func main() { // 连接grpc服务 conn, err := grpc.Dial(":8888", grpc.WithInsecure()) if err != nil { log.Fatal(err) } // 很关键 defer conn.Close() // 初始化客户端 c := love.NewLoveClient(conn) // 发起请求 response, err := c.Confession(context.Background(), &love.Request{Name: "BaoBao"}) if err != nil { log.Fatal(err) } log.Println(response.Result)}
运行结果
公众号:李田路口
最后
以上就是强健花生为你收集整理的golang tcp粘包 protobuf_Golang + gRPC 实践安装实例的全部内容,希望文章能够帮你解决golang tcp粘包 protobuf_Golang + gRPC 实践安装实例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复