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)}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1472425.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】06.栈队列

一、栈 1.1栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈&#…

昇思MindSpore学习总结九——FCN语义分割

1、语义分割 图像语义分割(semantic segmentation)是图像处理和机器视觉技术中关于图像理解的重要一环,AI领域中一个重要分支,常被应用于人脸识别、物体检测、医学影像、卫星图像分析、自动驾驶感知等领域。 语义分割的目的是对图…

【MySQL】数据类型{tinyint/bit/float/decimal/char/varchar/date/enum/set}

文章目录 1.数据类型分类2.数值类型2.1tinyint 1字节2.2bit 0-64位2.3浮点类型float 4个字节decimal 3.字符串类型char开多少空间为多大varchar开多少是上限 存多少占多大空间日期和时间类型enum和setenum:枚举,“单选”类型;set:…

数字人大赋能未来治理新篇章,正宇软件助力人大建设新实践

在全面贯彻落实党的二十大精神的开局之年,数字中国战略的深入实施如同一股强劲的东风,吹遍了神州大地的每一个角落。作为数字中国建设的重要组成部分,数字人大作为现代信息技术与人大工作深度融合的产物,正以其独特的魅力和深远的…

自定义代理编辑控件类TComboBoxDelegate

自定义代理编辑控件是在tableView单元格中,呈现编辑辅助的Combox控件 自定义代理编辑控件类TComboBoxDelegate的定义过程 重写自定义代理编辑组件类的四个方法: 创建编辑组件、模型赋值给代理编辑组件、代理编辑组件数据到模型、更新位置 .h #ifndef TC…

google::protobuf命名空间下常用的C++ API----message.h

#include <google/protobuf/message.h> namespace google::protobuf 假设您有一个消息定义为: message Foo {optional string text 1;repeated int32 numbers 2; } 然后&#xff0c;如果你使用 protocol编译器从上面的定义生成一个类&#xff0c;你可以这样使用它: …

docker介绍与详细安装

1 docker 介绍 1.1 虚拟化 在计算机中&#xff0c;虚拟化&#xff08;英语&#xff1a;Virtualization&#xff09;是一种资源管理技术&#xff0c;是将计算机的各种实体资源&#xff0c;如服务器、网络、内存及存储等&#xff0c;予以抽象、转换后呈现出来&#xff0c;打破实…

docker部署wg-easy和firefly

Background WireGuard是一种新型的VPN协议,它通过在内核层运行,提供高效、安全、简单和现代的VPN解决方案。wg-easy是一个专为简化 WireGuard VPN配置和管理而设计的工具&#xff0c;提供了界面化的管理&#xff0c;进一步降低WireGuard 的使用门槛&#xff0c;让用户无需深入了…

嵌入式Linux系统编程 — 6.7 实时信号

目录 1 什么是实时信号 2 sigqueue函数 3 sigpending()函数 1 什么是实时信号 等待信号集只是一个掩码&#xff0c;它并不追踪信号的发生次数。这意味着&#xff0c;如果相同的信号在被阻塞的状态下多次产生&#xff0c;它只会在信号集中被记录一次&#xff0c;并且在信号集…

利用谷歌云serverless代码托管服务Cloud Functions构建Gemini Pro API

谷歌在2024年4月发布了全新一代的多模态模型Gemini 1.5 Pro&#xff0c;Gemini 1.5 Pro不仅能够生成创意文本和代码&#xff0c;还能理解、总结上传的图片、视频和音频内容&#xff0c;并且支持高达100万tokens的上下文。在多个基准测试中表现优异&#xff0c;性能超越了ChatGP…

node 下载文件到网络共享目录

1、登录网络共享计算器 2、登录进入后复制要存储文件的目录路径 例如&#xff1a; \\WIN-desktop\aa\bb\cc 3、node 下载后写入网络共享目录 注意&#xff08;重要&#xff09;:在使用UNC路径时&#xff0c;请确保你正确转义了反斜杠&#xff08;使用两个反斜杠来表示一个&…

Ubuntu 22.04远程自动登录桌面环境

如果需要远程自动登录桌面环境&#xff0c;首先需要将Ubuntu的自动登录打开&#xff0c;在【settings】-【user】下面 然后要设置【Sharing】进行桌面共享&#xff0c;Ubuntu有自带的桌面共享功能&#xff0c;不需要另外去安装xrdp或者vnc之类的工具了 点开【Remote Desktop】…

跑冒滴漏智能识别摄像机

对于现代城市管理来说&#xff0c;跑冒滴漏智能识别摄像机正逐渐成为解决水管漏水问题和保护城市供水安全的重要工具。这类摄像机通过先进的视觉识别和数据分析技术&#xff0c;能够有效监测和识别城市管道系统中的漏水现象&#xff0c;对于提升供水系统效率和保障城市居民生活…

探寻操作系统文件名字符限制的规则和历史

引言 从最早的电脑系统到现代的操作系统&#xff0c;文件命名的规则一直在不断发展&#xff0c;这些规则体现了不同操作系统设计哲学的差异。作为开发者&#xff0c;了解这些差异和背后的历史渊源非常有价值&#xff0c;本文将详细探讨Windows、macOS和Linux三大主流操作系统在…

栈实现队列与队列实现堆

ok呀&#xff0c;上一篇博客写了队列的相关知识&#xff0c;接下来就是我们提及过的&#xff0c;栈与队列的相互实现了。堆与这个问题咧&#xff0c;其实大家完全可以当一个知识扩展因为&#xff0c;这个问题也是没有太多的实践意义的&#xff0c;更多的是教学意义。所以咧。大…

服务器数据恢复—DS5300存储raid5阵列数据恢复案例

服务器存储数据恢复环境&#xff1a; 某单位一台某品牌DS5300存储&#xff0c;1个机头4个扩展柜&#xff0c;50块硬盘组建2组RAID5磁盘阵列&#xff08;一组raid5阵列有27块成员盘&#xff0c;存放Oracle数据库文件&#xff1b;另外一组raid5阵列有23块成员盘&#xff09;。存储…

Jmeter使用JSON Extractor提取多个变量

1.当正则不好使时&#xff0c;用json extractor 2.提取多个值时&#xff0c;默认值必填&#xff0c;否则读不到变量

c进阶篇(四):内存函数

内存函数以字节为单位更改 1.memcpy memcpy 是 C/C 中的一个标准库函数&#xff0c;用于内存拷贝操作。它的原型通常定义在 <cstring> 头文件中&#xff0c;其作用是将一块内存中的数据复制到另一块内存中。 函数原型&#xff1a;void *memcpy(void *dest, const void…

长难句打卡7.4

But policymakers who refocus efforts on improving well-being rather than simply worrying about GDP figures could avoid the forecasted doom and may even see progress. 但政策制定者们应重新集中精力于提升&#xff08;社会&#xff09;幸福感&#xff0c;而非仅仅担…

Unity 资源 之 Sweet Cakes Icon套装,110个高品质蛋糕图标分享

Sweet Cakes Icon 套装 - 为 Unity 开发者带来甜蜜惊喜 前言资源包内容领取兑换码 前言 亲爱的 Unity 开发者们&#xff0c;今天要向你们介绍一款令人心动的图标套装 - Sweet Cakes Icon。 Sweet Cakes Icon 套装包含了超过 110 种高品质的蛋糕和纸杯蛋糕图标&#xff0c;这无…