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

昆明学校网站设计公司搜索引擎优化与推广技术

昆明学校网站设计公司,搜索引擎优化与推广技术,专做机票网站的软件公司,公司做企业网站前期准备 工具安装及使用 grpc开发 编写proto文件 proto文件是符合Protocol Buffers语言规范的数据交换协议文件,就像以前WebService定义服务时使用的XML文件。现在一般都是用proto3了,这里创建一个名为 hello.proto 的文件,放到项目的pr…

前期准备

工具安装及使用

grpc开发

编写proto文件

proto文件是符合Protocol Buffers语言规范的数据交换协议文件,就像以前WebService定义服务时使用的XML文件。现在一般都是用proto3了,这里创建一个名为 hello.proto 的文件,放到项目的proto目录下:

syntax = "proto3";option go_package="/proto";package Business;service Hello {rpc Say (SayRequest) returns (SayResponse);
}message SayResponse {string Message = 1;
}message SayRequest {string Name = 1;
}

这个协议很简单,有个名字为Hello的服务,提供一个名字为Say的rpc方法,这个方法有输入输出,输入信息中有一个名为Name的参数,输出信息中有一个名为Message的返回值。

生成grpc代码

在项目根目录执行执行: protoc --go_out=. --go-grpc_out=. ./proto/hello_grpc.proto

go mod init

# 初始化项目名为test
go mod init test# 安装依赖包
go mod tidy

服务端代码编写

// server.go
package mainimport ("context""fmt""net""test/proto""google.golang.org/grpc"
)type server struct {proto.UnimplementedHelloServer
}func (s *server) Say(ctx context.Context, req *proto.SayRequest) (*proto.SayResponse, error) {fmt.Println("request:", req.Name)return &proto.SayResponse{Message: "Hello " + req.Name}, nil
}func main() {listen, err := net.Listen("tcp", ":8001")if err != nil {fmt.Printf("failed to listen: %v", err)return}s := grpc.NewServer()proto.RegisterHelloServer(s, &server{})//reflection.Register(s)defer func() {s.Stop()listen.Close()}()fmt.Println("Serving 8001...")err = s.Serve(listen)if err != nil {fmt.Printf("failed to serve: %v", err)return}
}

客户端代码编写

// client.go
package mainimport ("bufio""context""fmt""os""test/proto""google.golang.org/grpc""google.golang.org/grpc/credentials/insecure"
)func main() {var serviceHost = "127.0.0.1:8001"conn, err := grpc.NewClient(serviceHost, grpc.WithTransportCredentials(insecure.NewCredentials()))if err != nil {fmt.Println(err)}defer conn.Close()client := proto.NewHelloClient(conn)rsp, err := client.Say(context.TODO(), &proto.SayRequest{Name: "test",})if err != nil {fmt.Println(err)}fmt.Println(rsp)fmt.Println("按回车键退出程序...")in := bufio.NewReader(os.Stdin)_, _, _ = in.ReadLine()
}

验证

# 安装依赖包
go mod tidy# 启动服务端代码
go run server.go
# Serving 8001...# 启动客户端代码
go run client.go
# Message:"Hello test"# 服务端输出
# request: test
http://www.dtcms.com/a/558747.html

相关文章:

  • 网站建设单位哪家好设计师接单的网站
  • 便宜做网站抖音代运营广州
  • 到底什么是:对称加密/非对称加密--公钥和密钥(下)
  • 恋爱网站建设成都小程序开发公司有哪些
  • 单位网站设计制作拓者设计吧注册还要钱
  • 赣州那里有做网站的公司长沙做网站seo优化外包
  • 上海自主建站模板手机高端网站建设
  • 开发指南140-跨服务数据范围限定
  • 网站建设实践心得体会wordpress 固定导航
  • 做网站可以不写代码百度推广投诉人工电话
  • Spring AI--工具调用
  • 网站的分辨率是多少平面设计师招聘广告文案
  • x402支付协议:促AI资产从概念走向落地
  • 重庆永川网站建设苏州公司网站建设价格
  • 做网站的是什么职位wordpress 分类图片尺寸
  • LeetCode LCR 085 括号生成
  • 域名怎么建设网站中国建设招标网住建部网站
  • 龙岩网站建设哪里比较好平潭县建设局网站
  • PCB设计<囫囵吞枣学习法>: 21_PCB设计之调整丝印和添加文字
  • 可信赖的常州网站建设电影网站建设成本
  • 农药化肥网站建设seo应该如何做
  • 机械加工网站平台北京网站优化常识
  • 做网站时兼容分辨率郑州做网站和app的公司
  • 安徽元鼎建设公司网站深圳软件公司排行
  • 动手学强化学习 第5章时序差分算法
  • 网站 改版方案上海最大的外贸公司
  • 中国十大大型门户网站网站开发的时间流程
  • Cache 策略
  • 百度网站分析怎么上国外购物网站
  • 二级域名网站查询入口全球搜索引擎排行榜