当前位置: 首页 > wzjs >正文

wordpress解除上传限制西安seo托管

wordpress解除上传限制,西安seo托管,有哪些外贸公司网站做的比较好,火车头采集wordpress发布我们来写一个远程加法服务:客户端传入两个整数,服务端返回它们的和。 项目结构如下: grpc-demo/ ├── proto/ │ └── calc.proto ├── server/ │ └── main.go ├── client/ │ └── main.go编写proto文件 // proto/…
  • 我们来写一个远程加法服务:客户端传入两个整数,服务端返回它们的和。

  • 项目结构如下:

grpc-demo/
├── proto/
│   └── calc.proto
├── server/
│   └── main.go
├── client/
│   └── main.go
  1. 编写proto文件
// proto/calc.protosyntax = "proto3";package calc;option go_package = "grpc-demo/proto;calc";service Calculator {rpc Add (AddRequest) returns (AddResponse);
}message AddRequest {int32 a = 1;int32 b = 2;
}message AddResponse {int32 result = 1;
}
  1. 生成 go 代码
// 1. 安装必要插件
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest// 2. 在项目根目录运行命令生成代码
protoc --go_out=. --go-grpc_out=. proto/calc.proto// 3. 会生成两个文件
proto/calc.pb.go
proto/calc_grpc.pb.go

在这里插入图片描述

  1. 编写服务端代码
// server/main.gopackage mainimport ("context""fmt""log""net"pb "grpc-demo/proto""google.golang.org/grpc"
)type calcServer struct {// gRPC 自动生成的嵌套结构体// 提供一个默认实现,当你忘了实现某个方法时,程序不会 panic,而是自动返回 Unimplemented 错误。// 等价于你默认实现了接口的所有函数(即使你只写了 Add() 一个方法),其他没写的方法会返回 "method Xxx not implemented",编译器不会报错,你的服务也不会挂,只是调用时返回错误。pb.UnimplementedCalculatorServer
}func (s *calcServer) Add(ctx context.Context, req *pb.AddRequest) (*pb.AddResponse, error) {sum := req.A + req.Breturn &pb.AddResponse{Result: sum}, nil
}func main() {lis, err := net.Listen("tcp", ":50051")if err != nil {log.Fatalf("监听失败: %v", err)}s := grpc.NewServer()// 把你自己写的服务实现(&calcServer{})注册到 gRPC 框架中,告诉框架:// “如果有客户端调用 Calculator 服务的 Add 方法,请调用我这个对象里的 Add 方法。”// 把你写好的 calcServer 对象和 Add 方法注册到 grpc.Server 内部的路由表里,告诉它“客户端调用 Add 的时候要调这个函数”。// func RegisterXXXServer(s *grpc.Server, srv XXXServer) 是 protoc 编译 .proto 文件时自动为每个 service 生成的“注册函数”。// 它的作用:把你实现的服务逻辑(结构体对象)注册到 gRPC 框架的内部路由表中,告诉它:“有客户端调用 XXX 这个服务时,应该调用这个对象的方法。”pb.RegisterCalculatorServer(s, &calcServer{}) fmt.Println("服务启动在 :50051")if err := s.Serve(lis); err != nil {log.Fatalf("服务启动失败: %v", err)}
}// [监听端口] —→ [创建gRPC服务器] —→ [注册服务实现] —→ [开始接收请求并处理]
  1. 编写客户端代码
// client/main.gopackage mainimport ("context""fmt""log""time"pb "grpc-demo/proto""google.golang.org/grpc"
)func main() {conn, err := grpc.Dial("localhost:50051", grpc.WithInsecure(), grpc.WithBlock())if err != nil {log.Fatalf("连接失败: %v", err)}defer conn.Close()client := pb.NewCalculatorClient(conn)ctx, cancel := context.WithTimeout(context.Background(), time.Second)defer cancel()req := &pb.AddRequest{A: 3, B: 5}resp, err := client.Add(ctx, req)if err != nil {log.Fatalf("调用失败: %v", err)}fmt.Printf("3 + 5 = %d\n", resp.Result)
}
  1. 运行项目
// 启动服务端
go run server/main.go// 启动客户端(另开一个终端)
go run client/main.go
你写的 .proto 文件↓(protoc 生成)
gRPC 生成接口 + 注册器↓
你实现接口(Add 函数)↓
RegisterCalculatorServer(s, 实现对象)↓
s.Serve(lis) 接受连接↓
接收到 "Calculator.Add" 的请求↓
自动调用你写的 Add 方法↓
返回结果
http://www.dtcms.com/wzjs/305741.html

相关文章:

  • 荣县网站建设凡科建站
  • 怎样与其它网站做友情链接seo专业培训seo专业培训
  • 厦门专业网站设计百度产品推广怎么收费
  • 网站建设衣服铜川网络推广
  • 电商网站代码模板游戏广告投放平台
  • 做网站软件图标是一个箭头的公司seo推广营销网站
  • 网站在公安部备案免费公司网站建站
  • 浙江做网站套餐app推广赚钱
  • 云南省建设厅网站二级建造师seo好seo
  • 定制网站制作广州产品营销策略
  • 海洋承德网站建设公司网络营销经典成功案例
  • 网站物理结构申请域名
  • 品牌网站策划方案上海哪家优化公司好
  • 网站被清空了怎么办成都网站改版优化
  • 北京大兴做环保备案网站百度竞价开户哪家好
  • 做php网站用什么软件seo流量是什么意思
  • 望京做网站百度笔记排名优化
  • 去哪找网站建设公司海南百度推广代理商
  • 怎样做赌博网站互动营销成功案例
  • 广州网站建设商城建设360优化大师最新版下载
  • 威海网站建设怎么样福州百度推广优化排名
  • flash网站建设技术百度快速排名优化技术
  • centos wordpress 整站地推团队
  • 金华网站建设方案策划怎么做好网站搜索引擎优化
  • 网站做icp备案有哪些好处网站推广怎么优化
  • 做游戏直播什么游戏视频网站好电商热门关键词
  • 如何能让企业做网站的打算福州百度快速优化排名
  • wordpress变数据库股票发行ipo和seo是什么意思
  • 庐江网站广告怎么做北京seo教师
  • 金华网站制作价格网站开发软件有哪些