使用RPC服务的步骤

服务方

1.首先服务的发布方在proto文件里面描述发布的方法,例如发送一个注册方法。

bash 复制代码
message RegisterRequest
{
    uint32 id = 1;
    bytes name = 2;
    bytes pwd = 3;
}

message RegisterResponse
{
    ResultCode result = 1;
    bool sucess = 2;
}

service UserServiceRpc
{
    rpc Login(LoginRequest) returns(LoginResponse);
    rpc Register(RegisterRequest) returns(RegisterResponse);
}

2.之后protoc user.proto --cpp_out=./生成cpp文件

生成完cpp后加入到服务方的代码中,我们将服务方的类继承于service UserServiceRpc类,重写我们的register类,框架负责调用该方法。

cpp 复制代码
 void Register(::google::protobuf::RpcController* controller,
                       const ::fixbug::RegisterRequest* request,
                       ::fixbug::RegisterResponse* response,
                       ::google::protobuf::Closure* done)
    {
        uint32_t id = request->id();
        std::string name = request->name();
        std::string pwd = request->pwd();

        bool ret = Register(id, name, pwd);

        response->mutable_result()->set_errcode(0);
        response->mutable_result()->set_errmsg("");
        response->set_sucess(ret);

        done->Run();
    }
};

调用方

根据proto文件里发布的方法,来写调用方的代码。

bash 复制代码
int main(int argc, char **argv)
{
    // 整个程序启动以后,想使用mprpc框架来享受rpc服务调用,一定需要先调用框架的初始化函数(只初始化一次)
    MprpcApplication::Init(argc, argv);

    // 演示调用远程发布的rpc方法Register
    fixbug::RegisterRequest req;
    req.set_id(2000);
    req.set_name("mprpc");
    req.set_pwd("666666");
    fixbug::RegisterResponse rsp;

    // 以同步的方式发起rpc调用请求,等待返回结果
    stub.Register(nullptr, &req, &rsp, nullptr); 

    // 一次rpc调用完成,读调用的结果
    if (0 == rsp.result().errcode())
    {
        std::cout << "rpc register response success:" << rsp.sucess() << std::endl;
    }
    else
    {
        std::cout << "rpc register response error : " << rsp.result().errmsg() << std::endl;
    }
    
    return 0;
}

这样就完成了一个服务方和调用方对rpc服务的使用。

相关推荐
2301_8217271738 分钟前
nfs服务
网络·笔记
老蒋新思维1 小时前
紧跟郑滢轩,以 “学习力 +” 驱动 AI 与 IP 商业变革
网络·人工智能·学习·tcp/ip·企业管理·创始人ip·创客匠人
AIwenIPgeolocation1 小时前
IP种子技术:构建全球P2P网络实时监测方案
网络·tcp/ip·p2p
Ace_31750887761 小时前
拼多多关键字搜索接口逆向:从 WebSocket 实时推送解析到商品数据结构化重建
数据结构·websocket·网络协议
小二·1 小时前
TCP/UDP/Socket/HTTP 网络编程高频面试题(47道 + 详细答案)
网络·tcp/ip·udp
清空mega2 小时前
第11章 网络编程
android·网络
橘子真甜~2 小时前
C/C++ Linux网络编程5 - 网络IO模型与select解决客户端并发连接问题
linux·运维·服务器·c语言·开发语言·网络·c++
霖003 小时前
ZYNQ——ultra scale+ IP 核详解与配置
服务器·开发语言·网络·笔记·网络协议·tcp/ip
天一生水water4 小时前
什么是调压器的P2s
linux·服务器·网络
onebound_noah5 小时前
电商图片搜索:技术破局与商业落地,重构“视觉到交易”全链路
大数据·前端·网络·人工智能·重构·php