grpc-demo on windows
1. 生成proto文件
>1. 安装grpc protoc生成工具
# https://github.com/protocolbuffers/protobuf/releases
>2. golang安装支持.proto文件的plugins
#setting -> plugins -> search "protobuf support"
>3. 安装grpc
# go get -u google.golang.org/grpc
>4. 安装grpc依赖, 安装成功后,会在$GOPATH/bin目录下生成两个2进制文件
# go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
# go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
>5. 加入环境变量
# E:\Go-project\bin
6>. 编写data.proto
# mkdir proto
# mkdir ./proto/pb
syntax = "proto3"; package test; option go_package="./pb"; message ProductRequest { int32 id = 1; } message ProductResponse { int32 stock = 1; } service ProService { rpc GetStockById(ProductRequest) returns (ProductResponse); }
>7. 编译proto,生成data.pb.go和data_grpc.pb.go
#protoc --go_out=. --go-grpc_out=. *.proto
2. 编写服务器端代码
package main import ( "context" "fmt" "gitee.com/grpc-demo/proto/pb" "google.golang.org/grpc" "log" "net" ) type Server struct { pb.UnimplementedProServiceServer } func (s *Server) GetStockById(ctx context.Context, pro *pb.ProductRequest) (*pb.ProductResponse, error) { // 业务处理 return &pb.ProductResponse{ Stock: pro.Id, }, nil } func main() { fmt.Println("start grpc server") listen, err := net.Listen("tcp", ":8012") if err != nil { log.Fatalf("fail to start server: %v", err) } s := grpc.NewServer() pb.RegisterProServiceServer(s, &Server{}) err = s.Serve(listen) if err != nil { log.Fatalf("fail to start grpc-server: %v", err) } }
3.编写客户端代码
package main import ( "context" "fmt" "gitee.com/grpc-demo/proto/pb" "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" "log" "time" ) func main() { fmt.Println("start client") conn, err := grpc.Dial("127.0.0.1:8012", grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithBlock()) if err != nil { log.Fatalf("fail to dial: %v", err) } defer conn.Close() client := pb.NewProServiceClient(conn) ctx, cancel := context.WithTimeout(context.Background(), time.Second) defer cancel() req := &pb.ProductRequest{ Id: 256, } res, err := client.GetStockById(ctx, req) if err != nil { log.Fatalf("get stock fail: %v", err) } log.Printf("get stock success: %v", res) }
4. 启动服务器
#go run .\server\main.go
#go run .\client\main.go
相关推荐
这是一篇关于google的grpc框架的java版本的入门demo从 进入java的学习指导页面# 克隆最新版本的栗子git clone -b v1.11.0 https://github.com/grpc/grpc-java# 进入项目cd grpc-java/examples/1.运行一个grpc应用# ...
【Python + gRPC 演示】 ...这个压缩包文件 "python-grpc-demo-master" 包含了完整的示例代码,供你参考和实践。通过运行这些代码,你将能够更好地理解 gRPC 在 Python 中的工作原理,以及如何利用它构建分布式系统。
2. Maven的安装通常涉及下载最新版本的Maven(例如,Apache Maven 3.2.1)并配置环境变量。确保在命令行中输入`mvn --version`能看到正确版本的信息,表明安装成功。 接下来,我们需要将Maven集成到Eclipse中: 1....
"demo-grpc"项目是一个示例,旨在帮助开发者了解并实践gRPC的基本用法。在这个项目中,我们很可能会找到如何创建、配置和运行gRPC服务的相关代码和文档。 gRPC是一个高性能、开源和通用的RPC(远程过程调用)框架,...
版该自述文件是为最新版本编写的。 如果要获取关联的自述文件,请以所需版本签出项目。 v0.2.0:发布于2018年9月1日:可与Google Assistant SDK alpha2一起使用。 此版本允许您将Assistant SDK与新的GRPC绑定一起...
接下来,安装最新版本的Go。 在撰写本文时,它是1.10.1,这是此演示的经过验证的工作版本。 下载链接在这里: : 。 在系统上安装Golang后,请确保已设置$ GOROOT和$ GOBIN环境变量。 您可以按照本指南来完成此步骤...
确保替换`版本号`为Tron SDK的最新稳定版本。接下来,我们创建一个Spring Boot应用,使用`@SpringBootApplication`注解来启用Spring的自动配置和组件扫描。 ```java import org.springframework.boot....