我是靠谱客的博主 强健花生,最近开发中收集的这篇文章主要介绍golang tcp粘包 protobuf_Golang + gRPC 实践安装实例,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

abb663647ddbc0cf9e1476a130b3775f.png

安装

安装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

实例

目录结构

0c4ce15321ad0a3e661fd2364b8b55ad.png

编写.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)}

运行结果

f1d00b085c22f6ffc87459b7715448eb.png
5309a0034f86a76cf773cd849e5fcc7a.png


公众号:李田路口

最后

以上就是强健花生为你收集整理的golang tcp粘包 protobuf_Golang + gRPC 实践安装实例的全部内容,希望文章能够帮你解决golang tcp粘包 protobuf_Golang + gRPC 实践安装实例所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部