如何在C ++中使用gRPC同时连接多台服务器?

时间:2018-01-16 21:45:31

标签: c++ grpc

我想使用gRPC同时向多个服务器提交相同的数据。

我查看了greeterAsyn2 c ++示例: https://github.com/grpc/grpc/blob/v1.8.x/examples/cpp/helloworld/greeter_async_client2.cc

从示例中:为了创建1个频道,您可以这样做:

GreeterClient greeter(grpc::CreateChannel(
            "localhost:50051", grpc::InsecureChannelCredentials()));

因为这会为频道创建存根:

class GreeterClient {
  public:
    explicit GreeterClient(std::shared_ptr<Channel> channel)
            : stub_(Greeter::NewStub(channel)) {}
}

我可以使用

提交数据
greeter.SayHello("hello world");  

但是,如果我想使用2个不同的频道向2个不同的服务器提交数据呢?

如果我只想添加另一个名为greeter2的GreeterClient对象:

GreeterClient greeter2(grpc::CreateChannel(
            "10.0.0.3:9008", grpc::InsecureChannelCredentials()));

尝试将数据提交到第二台服务器时出现分段错误:

greeter2.SayHello("hello world");  

1 个答案:

答案 0 :(得分:1)

你在做什么似乎没关系,我需要看看堆栈跟踪,看看出了什么问题。

将频道视为服务的抽象数据管道,如果您想与多个服务器通信,只需创建多个频道并分别发送它们。