您现在的位置是:主页 > news > 常德做网站多少钱/朋友圈产品推广文案
常德做网站多少钱/朋友圈产品推广文案
admin2025/5/18 1:48:56【news】
简介常德做网站多少钱,朋友圈产品推广文案,网站的线下推广怎么做,广州平台网站建设目录 1、获取gRPC和Protobuf依赖 2、安装protobuf编译器 3、安装两个插件 4、编译proto文件 5、服务端 6、客户端 7、结果展示 1、获取gRPC和Protobuf依赖 go get github.com/golang/protobuf/proto go get google.golang.org/grpc go get github.com/golang/protobuf/pr…
常德做网站多少钱,朋友圈产品推广文案,网站的线下推广怎么做,广州平台网站建设目录 1、获取gRPC和Protobuf依赖
2、安装protobuf编译器
3、安装两个插件 4、编译proto文件
5、服务端
6、客户端
7、结果展示 1、获取gRPC和Protobuf依赖
go get github.com/golang/protobuf/proto
go get google.golang.org/grpc
go get github.com/golang/protobuf/pr…
目录
1、获取gRPC和Protobuf依赖
2、安装protobuf编译器
3、安装两个插件
4、编译proto文件
5、服务端
6、客户端
7、结果展示
1、获取gRPC和Protobuf依赖
go get github.com/golang/protobuf/proto
go get google.golang.org/grpc
go get github.com/golang/protobuf/protoc-gen-go
goLand配置
2、安装protobuf编译器
Release Protocol Buffers v21.6 · protocolbuffers/protobuf · GitHubProtocol Buffers - Google's data interchange format - Release Protocol Buffers v21.6 · protocolbuffers/protobufhttps://github.com/protocolbuffers/protobuf/releases/tag/v21.6下载
创建文件夹
sudo mkdir /usr/local/proto
unzip protoc-21.6-linux-x86_64.zip
配置环境变量
sudo vi /etc/profile
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
export PATH=$PATH:/usr/local/proto/bin
export PATH=$PATH:/usr/local/proto/include
export PATH=$PATH:/home/cjs/go/bin
再执行下面命令,然后重启
source /etc/profile
重启之后,检查时候成功
protoc --version
3、安装两个插件
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
4、编译proto文件
目录结构:
proto文件
syntax = "proto3"; // 指定proto版本
package hello; // 指定默认包名// 指定golang包名
option go_package = "./hello";// 定义Hello服务
service Hello {// 定义SayHello方法rpc SayHello(HelloRequest) returns (HelloResponse) {}
}// HelloRequest 请求结构
message HelloRequest {string name = 1;
}// HelloResponse 响应结构
message HelloResponse {string message = 1;
}
进入下面文件夹下:
然后执行
protoc --go_out=./ --go_opt=paths=source_relative --go-grpc_out=./ --go-grpc_opt=paths=source_relative hello.proto
生成
5、服务端
package mainimport ("fmt""net"pb "awesomeProject/proto/hello" // 引入编译生成的包"golang.org/x/net/context""google.golang.org/grpc""google.golang.org/grpc/grpclog"
)const (// Address gRPC服务地址Address = "127.0.0.1:50052"
)// 定义helloService并实现约定的接口
type HelloService struct {pb.UnimplementedHelloServer
}// SayHello 实现Hello服务接口
func (h HelloService) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloResponse, error) {resp := new(pb.HelloResponse)resp.Message = fmt.Sprintf("Hello %s.", in.Name)fmt.Println(in.Name)return resp, nil
}func main() {listen, err := net.Listen("tcp", Address)if err != nil {grpclog.Fatalf("Failed to listen: %v", err)}// 实例化grpc Servers := grpc.NewServer()// 注册HelloServicepb.RegisterHelloServer(s, &HelloService{})grpclog.Info("Listen on " + Address)str := s.Serve(listen)fmt.Println(str)}
注意:根据自己工程包结构实现
6、客户端
package mainimport (pb "awesomeProject/proto/hello" // 引入proto包"fmt""golang.org/x/net/context""google.golang.org/grpc""google.golang.org/grpc/credentials/insecure""google.golang.org/grpc/grpclog"
)const (// Address gRPC服务地址Address = "127.0.0.1:50052"
)func main() {// 连接conn, err := grpc.Dial(Address, grpc.WithTransportCredentials(insecure.NewCredentials()))if err != nil {grpclog.Fatalln(err)}fmt.Println("连接成功")defer conn.Close()// 初始化客户端c := pb.NewHelloClient(conn)// 调用方法req := &pb.HelloRequest{Name: "gRPC"}res, err := c.SayHello(context.Background(), req)if err != nil {grpclog.Fatalln(err)}fmt.Println(res.Message)grpclog.Info(res.Message)
}