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

c++ grpc 第一个用例

一、linux 包管理工具安装

sudo apt-get update
sudo apt-get install -y build-essential autoconf libtool pkg-config cmake
sudo apt-get install -y libgflags-dev libgtest-dev
sudo apt-get install -y clang libc++-dev# 安装 gRPC C++ 相关依赖
sudo apt-get install -y libgrpc++-dev
# 安装 gRPC 编译工具
sudo apt-get install -y protobuf-compiler-grpc

二、编写proto

syntax = "proto3";service Greeter {rpc SayHello (HelloRequest) returns (HelloReply) {}
}message HelloRequest {string name = 1;
}message HelloReply {string message = 1;
}

三、编译命令,需要编译成protobufcppgrpccpp

protoc --proto_path=./ --grpc_out=./ --cpp_out=./ --plugin=protoc-gen-grpc=`which grpc_cpp_plugin` ./h.proto

四、服务端

#include <iostream>
#include <grpcpp/grpcpp.h>
#include "h.pb.h"
#include "h.grpc.pb.h"// 定义一个最终类,继承定义的 Greeter::Service服务端
class GreeterServiceImpl final : public Greeter::Service {// 重写父类的函数,基于 proto 增加了一个参数 ::grpc::ServerContext* context::grpc::Status SayHello(::grpc::ServerContext* context, const HelloRequest* request, HelloReply* reply) override {std::string prefix("Hello ");// 设置返回值reply->set_message(prefix + request->name());return ::grpc::Status::OK;}
};int main(){// 定义一个字符串,地址std::string server_address("0.0.0.0:50051");// 实例化最终类GreeterServiceImpl service;// grpc 的服务端::grpc::ServerBuilder builder;// grpc 服务端设置地址builder.AddListeningPort(server_address, grpc::InsecureServerCredentials());// grpc 注册服务builder.RegisterService(&service);// 开启服务std::unique_ptr<::grpc::Server> server(builder.BuildAndStart());// 服务一直开启server->Wait();return 0;
}

编译:g++ h.grpc.pb.cc server.cpp h.pb.cc -lprotobuf

五、客户端

#include <iostream>
#include <grpcpp/grpcpp.h>
#include "h.pb.h"
#include "h.grpc.pb.h"void run_grpc_client() {// 建立链接,可以设置模式std::shared_ptr<grpc::Channel> channel = grpc::CreateChannel("localhost:50051", grpc::InsecureChannelCredentials());// 建立服务std::unique_ptr<Greeter::Stub> stub = Greeter::NewStub(channel);   // Greeter 服务名称// 实例化输入HelloRequest request;request.set_name("Your Name"); // 设置请求参数// 实例化响应服务grpc::ClientContext context;// 实例化 输出HelloReply reply;// 获取服务响应grpc::Status status = stub->SayHello(&context, request, &reply);   // SayHello rpc函数名称if (status.ok()) {std::cout << "Server said: " << reply.message() << std::endl;} else {std::cout << "gRPC call failed with error code: " << status.error_code() << " - " << status.error_message() << std::endl;}
}int main() {run_grpc_client();return 0;
}

编译:g++ h.grpc.pb.cc client.cpp h.pb.cc -lprotobuf -lgrpc++

相关文章:

c++ grpc 第一个用例

一、linux 包管理工具安装 sudo apt-get update sudo apt-get install -y build-essential autoconf libtool pkg-config cmake sudo apt-get install -y libgflags-dev libgtest-dev sudo apt-get install -y clang libc-dev# 安装 gRPC C 相关依赖 sudo apt-get install -y …...

pandas笔记:读写excel

1 读excel read_excel函数能够读取的格式包含&#xff1a;xls, xlsx, xlsm, xlsb, odf, ods 和 odt 文件扩展名。 支持读取单一sheet或几个sheet。 1.0 使用的数据 1.1 主要使用方法 pandas.read_excel(io, sheet_name0, header0, namesNone, index_colNone, usecolsNon…...

【ES分词】

分词 #测试分词器 POST /_analyze {"text": "小米手机和华为手机都是国产mobilephone", "analyzer": "english" }不管analyzer是改成&#xff1a;standard还是chinese都无法实现中文分词。 处理中文分词一般采用IK分词器 安装链接&…...

Git设置显示中文

git config --global i18n.comitencoding utf-8 git config --global i18n.logoutputencoding utf-8 export LESSCHARSETutf-8...

数实结合的复杂电磁环境构建解决方案

数实结合的复杂电磁环境构建解决方案 数实结合的复杂电磁环境构建 目前无线收发设备面临的电磁环境愈发恶劣。为了检验设备在复杂电磁环境下的实际工作性能&#xff0c;需进行各种应用条件下的测试和试验。外场测试难以提供各种应用环境&#xff0c;存在测试周期长、成本高、难…...

MySQL geometry 类型数据测试

MySQL的geometry类型的表的创建和测试&#xff1a; CREATE TABLE geom_test01( id INT NOT NULL PRIMARY KEY, info varchar(100), geom GEOMETRY ); desc geom_test01; insert into geom_test01 (id,info,geom) values (1, geom, geomfromtext(MULTIPOLYGON(((1 1…...

基于袋獾算法的无人机航迹规划-附代码

基于袋獾算法的无人机航迹规划 文章目录 基于袋獾算法的无人机航迹规划1.袋獾搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用袋獾算法来优化无人机航迹规划。 1.袋獾搜索算法 …...

2024上海智博会,上海国际智慧城市,物联网,大数据展会(世亚智博会)

中国国际智慧城市,物联网,大数据博览会&#xff08;简称:世亚智博会&#xff09;自2010年创办以来&#xff0c;至今已成功举办十多届。世亚智博会是中国较高、规模较大、影响力较广的展会&#xff1b;是被国际业界公认的不可错过的名展之一。随着世亚智博会的国际地位和影响不断…...

家庭教育质量提升成未来教育关注重点

随着教育改革的不断深化&#xff0c;家校合作模式也在实践中不断探索和丰富。 11 月 6 日&#xff0c;第六届长三角家校合作论坛于上海杨浦盛大开幕&#xff0c;此次论坛围绕“家校协同与人的学校领导”这一主题展开深度研讨。论坛旨在交流和分享相关经验及做法&#xff0c;以…...

python入门系列(1)—— 环境安装

前言 社区里面有好多同学想要入门python&#xff0c;可能源于以下原因&#xff1a; 易学性&#xff1a;Python 的语法简洁、清晰&#xff0c;容易理解和上手&#xff0c;使得初学者能够轻松入门编程。无论是编写基本的脚本还是进行更复杂的开发&#xff0c;Python 都提供了友…...

react组件通信

目录 前言&#xff1a; 父子组件通信 子父组件通信 兄弟组件通信 总结 前言&#xff1a; React是一种流行的JavaScript库&#xff0c;用于构建现代化的、高性能的Web应用程序。在React中&#xff0c;组件是代码的构建块。组件通信是React中一个非常重要的概念&#xff0c;…...

学习笔记|Pearson皮尔逊相关系数|Spearman斯皮尔曼相关系数|和Kendall肯德尔tau-b相关系数|分析流程|-SPSS中双变量相关性分析系数

目录 学习目的软件版本原始文档基础概念皮尔逊相关系数基本假设&#xff08;适用条件&#xff09;&#xff1a;系数的范围及意义实例1. 读数据&#xff1a;2.正态性检验&#xff1a;3.异常值检验&#xff08;体重&#xff09;&#xff1a;4.分析&#xff1a; 斯皮尔曼相关系数基…...

计算机服务器中了locked勒索病毒怎么办,勒索病毒解密,数据恢复

随着网络技术的不断成熟&#xff0c;网络中存在的病毒威胁也不断增多&#xff0c;近期&#xff0c;云天数据恢复中心陆续接到很多企业的求助&#xff0c;企业的计算机服务器数据库遭到了勒索病毒攻击&#xff0c;并且勒索病毒的攻击与加密形式也发生了许多变化。其中攻击次数较…...

本地生活餐饮视频怎么拍摄能有更多流量?如何批量生产呢?

本地生活近几年特别的火&#xff0c;所以到现在各类内容雷同性也比较高&#xff0c;视频缺少新的创意和玩法&#xff0c;像餐饮店的视频&#xff0c;大部分都是拍顾客进门、拍餐饮店座无虚席的实景……作为用户&#xff0c;其实早就已经看腻了。 今天推荐本地生活餐饮店商家拍…...

【笔记】原型和原型链(持续完善)

概念 原型&#xff1a;函数都具有 prototype 属性&#xff0c;称之为原型&#xff0c;也称之为原型对象 1.1 原型可以放一些属性和方法&#xff0c;共享给实例对象使用&#xff08;也就是原生方法&#xff09;。 1.2 原型可以做继承原型链&#xff1a;对象都有 __proto__ 属性…...

python向word中添加表格

1、表格插入 方法一&#xff1a;直接创建表添加 #导入库 from docx import Document #创建文档对象 document Document()#创建5行7列表格 table document.add_table(rows5, cols7)#修改第2行第3列单元格的内容为中国 table.cell(1,2).text中国 #修改第3行第4列单元格的内容…...

2023_11_6 每日半小时 SQL 刷题

文章目录 1. 查询所有列题目描述SQL 语句编写 2. 查询多列题目描述SQL 语句编写 3. 查询结果去重题目描述SQL 语句编写 4. 查询结果限制返回行数题目描述SQL 语句编写 5. 将查询后的列重新命名题目描述SQL 语句编写 语法小总结 1. 查询所有列 题目链接&#xff1a;SQL1 查询所…...

Redis系列-Redis性能优化与安全【9】

目录 Redis系列-Redis性能优化与安全【9】Redis性能优化策略Redis安全设置与防护措施Redis监控与诊断工具介绍 七、Redis应用案例与实战八、Redis未来发展与趋势 个人主页: 【⭐️个人主页】 需要您的【&#x1f496; 点赞关注】支持 &#x1f4af; Redis系列-Redis性能优化与安…...

centos7下安装主从仲裁三台结构的MongoDB 7.0.4

安装手册英文版在这里 https://www.mongodb.com/docs/v7.0/tutorial/install-mongodb-on-red-hat/ 我的安装过程 1&#xff09;基础安装 1、创建 /etc/yum.repos.d/mongodb-org-7.0.repo文件 下面的代码复制到这个文件中&#xff0c;保存 [mongodb-org-7.0] nameMongoDB Re…...

2258. 逃离火灾 : 详解如何从「二分」到「分类讨论」(图解过程)

题目描述 这是 LeetCode 上的 「2258. 逃离火灾」 &#xff0c;难度为 「困难」。 Tag : 「多源 BFS」、「二分」、「预处理」 给你一个下标从 0 开始大小为 m x n 的二维整数数组 grid&#xff0c;它表示一个网格图。 每个格子为下面 个值之一&#xff1a; 0 表示草地。 1 表…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的&#xff0c;启动是正常的&#xff0c; 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...

0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化

是不是受够了安装了oracle database之后sqlplus的简陋&#xff0c;无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话&#xff0c;配置.bahs_profile后也能解决上下翻页这些&#xff0c;但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可&#xff0c…...