golang grpc demo
1.grpm 安装:
git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc
2.proto, protoc-gen-go 安装:
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
3.protoc 安装:
git clone https://github.com/protocolbuffers/protobuf.git cd $GOPATH/src/github.com/protocolbuffers/ ./autogen.sh ./configure make -j12 make install
4.go-genproto 安装(运行时需要的依赖,下载完移动到相应的目录里面)
git https://github.com/googleapis/go-genproto.git
5.protoc 查看版本:
[root@wangjq]# protoc --version libprotoc 3.10.0
6.目录结构:
[root@wangjq demo]# tree . ├── client │ └── main.go ├── example │ └── data.proto └── server└── main.go3 directories, 4 files
7.data.proto 内容如下
syntax = "proto3"; //指定proto版本 package proto;//定义请求结构 message HelloRequest{string name=1; }//定义响应结构 message HelloReply{string message=1; }//定义Hello服务 service Hello{//定义服务中的方法 rpc SayHello(HelloRequest) returns (HelloReply){} }
8.生成 data.pb.go 文件
protoc -I . --go_out=plugins=grpc:. ./data.proto
9.服务端代码
package mainimport (pb "demo/example""fmt""golang.org/x/net/context""google.golang.org/grpc""net" )const (//gRPC服务地址Address = "127.0.0.1:50052" )//定义一个helloServer并实现约定的接口 type helloService struct{}func (h helloService) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {resp := new(pb.HelloReply)resp.Message = "hello" + in.Name + "." return resp, nil }var HelloServer = helloService{}func main() {listen, err := net.Listen("tcp", Address)if err != nil {fmt.Printf("failed to listen:%v", err)}//实现gRPC Servers := grpc.NewServer()//注册helloServer为客户端提供服务pb.RegisterHelloServer(s, HelloServer) //内部调用了s.RegisterServer()fmt.Println("Listen on" + Address)s.Serve(listen) }
10.客户端代码
package mainimport (pb "demo/example""fmt""golang.org/x/net/context""google.golang.org/grpc" )const (Address = "127.0.0.1:50052" )func main() {//连接gRPC服务器conn, err := grpc.Dial(Address, grpc.WithInsecure())if err != nil {fmt.Println(err)} defer conn.Close()//初始化客户端c := pb.NewHelloClient(conn)//调用方法reqBody := new(pb.HelloRequest)reqBody.Name = "gRPC"r, err := c.SayHello(context.Background(), reqBody)if err != nil {fmt.Println(err)}fmt.Println(r.Message) }
11.运行测试
服务端运行: [root@wangjq demo]# go run server/main.go Listen on127.0.0.1:50052客户端运行: [root@wangjq demo]# go run client/main.go hellogRPC.
转载于:https://www.cnblogs.com/wangjq19920210/p/11572283.html
golang grpc demo相关推荐
- 【Golang | gRPC】gRPC-Client Streaming客户端流实战
环境: Golang: go1.18.2 windows/amd64 grpc: v1.47.0 protobuf: v1.28.0 完整代码: https://github.com/WanshanT ...
- Golang gRPC 示例
Golang gRPC 示例 1.安装gRPC runtime go get google.golang.org/grpc 为了自动生成Golang的gRPC代码,需要安装protocal buffe ...
- golang 并发demo 写入 redis
原文链接:golang 并发demo 写入 redis 源代码: package mainimport ("fmt""runtime""strconv ...
- 【Golang | gRPC】使用protoc编译.proto文件
环境: Golang: go1.18.2 windows/amd64 protoc:libprotoc 3.21.1 1. 安装protoc 使用protoc编译.proto文件,首先需要正确安装pr ...
- 运行cartographer的gRPC demo,附百度文件链接
预先安装的库(主要是catographer和gRPC的基本依赖库) sudo apt-get install -y \cmake \g++ \git \google-mock \libboost-al ...
- Golang gRPC学习(04): Deadlines超时限制
为什么要使用Deadlines# 当我们使用gRPC时,gRPC库关系的是连接,序列化,反序列化和超时执行.Deadlines 允许gRPC客户端设置自己等待多长时间来完成rpc操作,直到出现这个错误 ...
- Golang gRPC实践 连载六 内置Trace
2019独角兽企业重金招聘Python工程师标准>>> 内置Trace grpc默认提供了客户端和服务端的trace日志,可惜没有提供自定义接口,当前只能查看基本的事件日志和请求日志 ...
- golang rpc demo
RPC工作流程图 1.调用客户端句柄:执行传送参数 2.调用本地系统内核发送网络消息 3.消息传送到远程主机 4.服务器句柄得到消息并取得参数 5.执行远程过程 6.执行的过程将结果返回服务器句柄 7 ...
- mac golang grpc proto pb文件生成go文件.md
文章目录 1.简介 2.操作步骤 1. 安装基础的protoc工具 1. 下载 2. 添加protoc到PATH 3. 安装golang的支持 4. 使用 1. 普通编译 2. import的路径 参 ...
最新文章
- 全民K歌内容挖掘与召回
- python pyOpenGL安装
- GeoServer简介、下载、配置启动、发布shapefile全流程(图文实践)
- 【论文解读】基于图卷积的价格感知推荐
- 认识本质:黑天鹅、关键时刻与张小龙的产品观
- NumPy入门攻略:手把手带你玩转这款强大的数据分析和计算工具
- 鼎微方案导航一体机刷机包_SMB方案之星 | 海康威视人脸门禁一体机产品应用方案集锦...
- eclipse安装M2Eclipse插件
- npoi excel导入html数据库,C#_.NetFramework_Web项目_NPOI_EXCEL数据导入
- 关于ESAPI获取资源文件问题
- 三菱PLC与威伦触摸屏通过OPC通信连接在线模拟仿真
- wifi信道12为啥没人用_关于WIFI信道的问题?
- channel代码示例
- 【letex编辑输出】pdf文件嵌入字体embedded fonts的问题
- (附源码)Python二手电脑商城 毕业设计 251713
- 初识结构体之座机电话号码
- 宏基因组分析步骤Linux,宏基因组--简单流程(代码)
- 数据结构笔记(6)二叉树的实现
- MATLAB 渐进式形态学滤波
- 程序员同事表演加班一个月后,我离职了
热门文章
- linux中vi大括号enter缩进,格式 – 如何在vi中对齐代码(大括号,括号等)?
- 中国语言文学专业c刊排行榜,中国有名的文学刊物有哪些 十大中国著名文学刊物盘点...
- windows消息机制和Linux,Windows消息机制初谈 (转)
- matlab过滤,matlab过滤问题
- 图标出问题_同是Office365,为什么你的软件图标还是旧版的?
- python函数大全和意思_python 之 内置函数大全
- 查看约束信息_【华智产品汇】育种信息安全的守护者——华智育种管家
- matlab 二值化_撸了一份 ostu二值化,需要的小伙伴请拿走
- grep 显示前后几行
- 【Thymeleaf】格式化数字