grpc的编译和使用简单介绍

缘由:

        年前做的项目要从C/S变为B/S的形式,遂涉及到java和c++的交互问题,想到用rpc作为底层协议使java和c++交互更为遍历,本文将介绍grpc的windows平台编译和简单使用,及很Nice的protobuf的一些原理。

grpc的编译:

        1.从github上https://github.com/grpc/grpc克隆代码到本地。

        2.然后输入命令git submodule update --init克隆第三方软件,此时可能会遇到下载代码只有10.x k的情况,十分缓慢,这时候可以先将git同步到码云上,这样速度会变快。

        3.用cmake生成vs的解决方案,简单的命令为cmake -G "Visual Studio 16 2019 Win64" ..,或者用cmake的桌面gui工具。推荐的生成器为2017或者2019。

        4.生成vs解决方案后,打开grpc.sln,All_BUILD.vcproj后开始编译。

protobuf的介绍:

        .proto文件是一种谷歌内部使用的无视平台无视语言,可以快速序列化和反序列化的一种工具,速度比xml/json等都快的多,适用于大量的数据传输时候使用。

        下面是一个简单的例子,针对这个简单的例子对protobuf进行简单的用法说明:

         syntax = "proto3";
 
        option java_multiple_files = true;
        option java_package = "io.grpc.examples.helloworld";
        option java_outer_classname = "HelloWorldProto";
        option objc_class_prefix = "HLW";
 
        package helloworld;
 
        // The greeting service definition.
        service Greeter {
        // Sends a greeting
        rpc SayHello (HelloRequest) returns (HelloReply) {}
        }
 
        // The request message containing the user's name.
        message HelloRequest {
        string name = 1;
        }
 
       // The response message containing the greetings
       message HelloReply {
        string message = 1;
       }

       1)syntax指定的是protobuf的哪个版本,现在最新支持的是proto3版本。

       2)message相当于c++中的class或struct

       3)字段规则是 字段类型 名称 = 字段编号;

       4)字段类型分为:required/optional/repeated三种,分别对应必须出现一次,字段可能出现0到1此,字段可能出现任意次

       4)类型:int32、int64、sint32、sint64、string、32-bit等

       5)函数需要在函数前加rpc      

protobuf的原理:

       序列化、反序列化、反射;

grpc的简单应用:

        1.写.proto文件。

        2.用protoc得到cpp接口XX.pb.cc,命令为 protoc --cpp_out=. my.proto

        3.用protoc得到java接口com/grpc/XX.java,命令为 protoc --java_out=. my.proto

        4.用potoc得到grpc的接口XX.grpc.pb.cc,命令为protoc -I=. --grpc_out=./ --plugin=protoc-gen-grpc=E:/project/2020/grpc/.bulid/Release/grpc_cpp_plugin.exe my.proto

        5.建立server,这个过程遇到各种各样的链接不上的问题,需要引入grpc编译出的gpr.lib/grpc.lib/libprotobuf.lib/zip.lib/upb.lib/cares.lib/address_sorting.lib等。若报ssl_support的错误需要重新编译openssl或者用grpc_unsecure.lib或grpc++_unsercure的库。

        6.建立client,重复上述5中的操作即可建立一个简单的rpc服务器。

遇到的错误:    

#error \

    "Please compile grpc with _WIN32_WINNT of at least 0x600 (aka Windows Vista)"

         这个需要增加宏定义设置_WIN32_WINNT=0x600

        ServerBuilder这个类链接不上,需要加入protoc生成的文件XX.pd.cpp/XX.grpc.pd.cpp

 

grpc-java的使用:

       利用git导下代码 git clone  https://github.com/grpc/grpc-java.git

       java,clone下的代码就是realse版本,可以直接使用,打开上述步骤的c++的grpc服务器,然后使用grpc的快启动来测试程序,关于grpc的快启动的网页地址是https://www.grpc.io/docs/quickstart/java/。测试结果成功,返回正确的结果。

结束:

       至此关于利用grpc的方式令java和c++两种平台语言交互成功。

                 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是在 Windows 上编译 gRPC 的详细步骤: 1. 安装 Git 和 Visual Studio 在 Windows 上编译 gRPC,您需要先安装 Git 和 Visual Studio。您可以从以下链接下载和安装它们: - Git:https://git-scm.com/downloads - Visual Studio:https://visualstudio.microsoft.com/downloads/ 2. 克隆 gRPC 代码库 打开 Git Bash 或者其他命令行工具,输入以下命令来克隆 gRPC 代码库: ``` git clone -b v1.38.x https://github.com/grpc/grpc.git ``` 3. 安装依赖库 在 Windows 上编译 gRPC,您还需要安装一些依赖库,包括 OpenSSL 和 protobuf。您可以使用 vcpkg 工具来安装它们。以下是安装步骤: - 下载 vcpkg 工具:https://github.com/microsoft/vcpkg - 打开命令行工具,进入 vcpkg 目录,使用以下命令安装 OpenSSL 和 protobuf: ``` .\vcpkg.exe install openssl:x64-windows protobuf:x64-windows ``` 4. 生成 Visual Studio 解决方案和项目 进入 gRPC 代码库的根目录,在命令行工具中输入以下命令来生成 Visual Studio 解决方案和项目: ``` mkdir cmake_build cd cmake_build cmake -G "Visual Studio 16 2019" -A x64 -DCMAKE_TOOLCHAIN_FILE=..\third_party\vcpkg\scripts\buildsystems\vcpkg.cmake -DgRPC_SSL_PROVIDER=package -DgRPC_ZLIB_PROVIDER=package .. ``` 5. 构建 gRPC 打开生成的 Visual Studio 解决方案,选择 "Release" 配置,然后构建 gRPC 项目。 您可以使用 Visual Studio 中的菜单或者使用以下命令来构建: ``` cmake --build . --config Release ``` 6. 运行测试 构建完成后,在命令行工具中输入以下命令来运行 gRPC 的测试: ``` cd grpc cmake --build . --config Release --target grpc_cli cd cmake_build ctest -C Release --output-on-failure -j 4 ``` 以上就是在 Windows 上编译 gRPC 的步骤。注意,实际情况可能会因不同的环境而有所不同,这只是一个简单的指南。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值