

我已经通过vcpkg安装好本地grpc环境
gRPCServer)和客户端(如gRPCClient)项目 protos文件夹,新建greet.proto文件(示例内容如下):syntax = "proto3";
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
message HelloRequest { string name = 1; }
message HelloReply { string message = 1; }protoc -I=protos/ --grpc_out=protos/ --plugin=protoc-gen-grpc="C:\vcpkg\vcpkg\installed\x64-windows\tools\grpc\grpc_cpp_plugin.exe" protos/greet.proto生成greet.pb.h、greet.pb.cc、greet.grpc.pb.h、greet.grpc.pb.cc四个文件
配置步骤同上,与服务端完全一致
在gRPCServer项目中添加server.cpp:
#include <grpcpp/grpcpp.h>
#include "protos/greet.grpc.pb.h"
class GreeterServiceImpl final : public Greeter::Service {
grpc::Status SayHello(grpc::ServerContext* context,
const HelloRequest* request,
HelloReply* reply) override {
reply->set_message("Hello " + request->name());
return grpc::Status::OK;
}
};
void RunServer() {
std::string server_address("0.0.0.0:50051");
GreeterServiceImpl service;
grpc::ServerBuilder builder;
builder.AddListeningPort(server_address, grpc::InsecureServerCredentials());
builder.RegisterService(&service);
std::unique_ptr<grpc::Server> server(builder.BuildAndStart());
std::cout << "Server listening on " << server_address << std::endl;
server->Wait();
}
int main() {
RunServer();
return 0;
}在gRPCClient项目中添加client.cpp:
#include <grpcpp/grpcpp.h>
#include "protos/greet.grpc.pb.h"
class GreeterClient {
public:
GreeterClient(std::shared_ptr<grpc::Channel> channel)
: stub_(Greeter::NewStub(channel)) {}
std::string SayHello(const std::string& name) {
HelloRequest request;
request.set_name(name);
HelloReply reply;
grpc::ClientContext context;
grpc::Status status = stub_->SayHello(&context, request, &reply);
if (status.ok()) return reply.message();
else return "RPC failed";
}
private:
std::unique_ptr<Greeter::Stub> stub_;
};
int main() {
GreeterClient client(grpc::CreateChannel("localhost:50051",
grpc::InsecureChannelCredentials()));
std::cout << client.SayHello("World") << std::endl;
return 0;
}gRPCServer → 调试 → 启动新实例 gRPCClient → 调试 → 启动新实例 正确输出应为:
Hello World
vcpkg install grpc:x64-windows).lib文件是否存在于C:\vcpkg\vcpkg\installed\x64-windows\lib目录
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。