GRPC for android在检查SO_REUSEPORT时失败

时间:2016-09-15 13:52:10

标签: android grpc

我们正在考虑使用grpc作为同一台计算机上进程之间进行通信的方法。现在我们正在测试它是否支持Android。我们从grpc源编译了“hello world”测试程序,并且能够在Android设备上运行(4.0.4)。但是,测试失败,输出如下:

E0915 13:23:11.914287843 1074 tcp_server_posix.c:150]检查SO_REUSEPORT:{“created”:“@ 1473945791.913738526”,“description”:“OS Error”,“errno”:92,“file”:“ src / core / lib / iomgr / socket_utils_common_posix.c“,”file_line“:181,”os_error“:”协议不可用“,”系统调用“:”setsockopt(SO_REUSEPORT)“} 服务器监听0.0.0.0:50051

这可能以某种方式修复吗?或者它只是意味着我们不能在Android上使用grpc?

尝试手动设置选项:

class Opts : public ::grpc::ServerBuilderOption
{
 public:
  void UpdateArguments(ChannelArguments* arg) GRPC_OVERRIDE
  {
      std::cout << "UpdateArguments called:" << std::endl;
      arg->SetInt(GRPC_ARG_ALLOW_REUSEPORT, 0);
  }

  void UpdatePlugins(std::vector<std::unique_ptr<ServerBuilderPlugin>>* plugins)  GRPC_OVERRIDE
  {
      for(auto s = plugins->begin(); s!= plugins->end(); ++s)
      {
          std::cout << (*s)->name() << std::endl;
      }
  }
};

... 

   std::unique_ptr<ServerBuilderOption> opts(new Opts);
   builder.SetOption(std::move(opts));

0 个答案:

没有答案