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

grpc-go服务端接口添加

【1】新建一个目录whgserviceproto,目录下新建一个proto包:whgserviceproto.proto

(注意目录和包名称保持一致)

//协议为proto3
syntax = "proto3";
// 指定生成的Go代码在你项目中的导入路径
option go_package="./;whgserviceproto"; //注意:whgserviceproto会变成转换后的包名称
package whgserviceproto;
// 定义服务接口
// 可定义多个服务,每个服务可定义多个接口
service WHG{rpc SayStatus (WHGRequest) returns (WHGResponse){}
}
// 请求参数结构
message WHGRequest{	string name = 1;
}
// 响应参数结构
message WHGResponse{string status =1;
}

【2】生成"xx.pb.go"和"xx_grpc.pb.go"文件

1)进入proto目录

2)protoc --go_out=. whgserviceproto.proto

3)protoc --go-grpc_out=. whgserviceproto.proto

【3】新建一个WHGSERVER目录,增加一个main.go文件

package mainimport ("context"//"flag""fmt""log""net""google.golang.org/grpc""grpc-go-master/examples/whgservice/whgserviceproto"
)type WHGServerObject struct {whgserviceproto.UnimplementedWHGServer
}func (s *WHGServerObject) SayStatus(ctx context.Context, req *whgserviceproto.WHGRequest) (resp *whgserviceproto.WHGResponse, err error) {log.Printf("recv:%v", req.GetName())return &whgserviceproto.WHGResponse{Status: req.GetName() + " run"}, nil
}func main() {//创建listen监听端口fmt.Println("server start")//listener, err := net.Listen("tcp", "127.0.0.1:8888")listener, err := net.Listen("tcp", "0.0.0.0:8888")if err != nil {panic(err)}//创建 gRPC 服务对象s := grpc.NewServer()//调用函数的结构体注册到grpc服务中whgserviceproto.RegisterWHGServer(s, &WHGServerObject{})log.Printf("server listening at %v", listener.Addr())//运行gRPC服务if err = s.Serve(listener); err != nil {panic(err)}}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SPE连接器技术革新汽车制造业
  • 恒指头肩底要走出来了?
  • 实践致知第12享:如何新建一个Word并设置格式
  • Python数据分析案例50——基于EEMD-LSTM的石油价格预测
  • 雷达视频采集卡 HPx-410
  • 技术速递|宣布为 .NET 升级助手提供第三方 API 和包映射支持
  • 2024亚太杯中文赛数学建模B题word+PDF+代码
  • Spring Boot集成fastjson2快速入门Demo
  • 【大模型LLM面试合集】大语言模型基础_NLP面试题
  • uboot学习:(一)基础认知
  • Linux运维:MySQL中间件代理服务器,mycat读写分离应用实验
  • ceph存储
  • 大语言模型应用--AI工程化落地
  • 高中数学:立体几何-基本立体图形分类
  • DAMA学习笔记(四)-数据建模与设计
  • 分享一款快速APP功能测试工具
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • AHK 中 = 和 == 等比较运算符的用法
  • Angular 4.x 动态创建组件
  • echarts的各种常用效果展示
  • JavaScript中的对象个人分享
  • PHP 7 修改了什么呢 -- 2
  • Redux系列x:源码分析
  • storm drpc实例
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 理解在java “”i=i++;”所发生的事情
  • 浅谈web中前端模板引擎的使用
  • 新版博客前端前瞻
  • 学习笔记:对象,原型和继承(1)
  • 一起参Ember.js讨论、问答社区。
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 追踪解析 FutureTask 源码
  • MyCAT水平分库
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 浅谈sql中的in与not in,exists与not exists的区别
  • #QT(智能家居界面-界面切换)
  • #微信小程序:微信小程序常见的配置传值
  • (4.10~4.16)
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (生成器)yield与(迭代器)generator
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转载)OpenStack Hacker养成指南
  • ./configure,make,make install的作用
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .net反编译的九款神器
  • .Net下的签名与混淆
  • .net中我喜欢的两种验证码