android的GRPC在检查SO_重用端口时失败
我们正在考虑使用grpc作为同一台计算机上进程之间的通信手段。现在我们正在测试它是否支持Android。我们从grpc源代码编译了“hello world”测试程序,并且能够在Android设备(4.0.4)上运行。但是,测试失败,输出如下: E0915 13:23:11.914287843 1074 tcp_server_posix.c:150]检查SO_重用端口:{“已创建”:“@1473945791.913738526”,“描述”:“操作系统错误”,“错误号”:92,“文件”:“src/core/lib/iomgr/socket_utils_common_posix.c”,“文件行”:181,“操作系统错误”:“协议不可用”,“系统调用”:“setsockopt(SO_重用端口)” 正在0.0.0.0:50051上侦听的服务器 这有可能以某种方式修复吗?或者这仅仅意味着我们不能在Android上使用grpc 尝试手动设置选项:android的GRPC在检查SO_重用端口时失败,android,grpc,Android,Grpc,我们正在考虑使用grpc作为同一台计算机上进程之间的通信手段。现在我们正在测试它是否支持Android。我们从grpc源代码编译了“hello world”测试程序,并且能够在Android设备(4.0.4)上运行。但是,测试失败,输出如下: E0915 13:23:11.914287843 1074 tcp_server_posix.c:150]检查SO_重用端口:{“已创建”:“@1473945791.913738526”,“描述”:“操作系统错误”,“错误号”:92,“文件”:“src/c
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));
class选项:public::grpc::serverbuilder选项
{
公众:
void UpdateArguments(ChannelArguments*arg)GRPC_覆盖
{
std::cout begin();s!=插件->结束();+s)
{
STD::CUT NAME:()你是使用C++吗?我希望这是一个软故障:你没有得到SOUReUpPoT功能,但是服务器仍然启动和运行。谢谢你的回复。是的,它是C++。它似乎运行,正如你所说的。但是TestClient没有收到任何东西,所以有些东西失败了。这是我得到的唯一输出。有什么想法?你在客户端上有什么错误?我假设你正在尝试连接到127.0.0.1:500 51或本地主机:ust似乎什么都没有发生。在客户端代码中,它正在尝试连接到本地主机:50051。我们尝试更改服务器代码,以便它不使用so_REUSEPORT(请参阅下一条注释中的代码)类选项:public::grpc::ServerBuilderOption{public:void UpdateArguments(ChannelArguments*arg)grpc_OVERRIDE{std::cout begin();s!=插件->结束();++s){std::cout name()