C++ 实现GRPc 端口数据监听的代码
时间: 2024-09-21 09:08:45 浏览: 46
在C++中,gRPC是一种高性能、开源的RPC框架,它基于HTTP/2协议,可以用于客户端和服务端之间的通信。为了监听GRPC端口并处理数据,你需要使用gRPC库提供的工具和类。以下是一个简单的示例,展示如何使用`grpc::ServerBuilder`来创建一个服务器监听特定端口:
```cpp
#include <grpcpp/grpcpp.h>
#include "your_service.grpc.pb.h" // 假设有一个名为your_service.proto的服务定义文件
// 创建服务实例
std::unique_ptr<YourService::Service> service = YourService::Service::NewStub(grpc::CreateChannel("localhost:50051", grpc::InsecureChannelCredentials()));
// 定义服务器配置
grpc::ServerBuilder builder;
builder.AddListeningPort("[::]:50051", grpc::InsecureServerCredentials()); // 使用本地所有IP地址监听50051端口
builder.RegisterService(service.get());
// 启动服务器
future<Status> server_status = builder.BuildAndStart();
std::cout << "Server listening on port 50051...\n";
// 循环等待关闭信号
if (server_status.wait_for(std::chrono::seconds(60)) == std::future_status::ready) {
Status status = server_status.get();
if (status.ok()) {
std::cout << "Server stopped cleanly.\n";
} else {
std::cerr << "Server stopped with error code: " << status.error_code() << "\n";
}
}
// 关闭服务器
builder.Shutdown();
```
在这个例子中,`YourService::Service`应该替换为你实际的服务类名,而`your_service.grpc.pb.h`是对应的服务定义文件。这个服务器会一直运行,直到接收到停止信号。
阅读全文