gRPC C ++,客户端:“14:连接失败”

时间:2017-07-19 06:59:04

标签: c++ grpc

我们正在运行来自https://grpc.io/docs/quickstart/cpp.html#update-a-grpc-service的“helloworld”示例,我们收到了以下错误:

  

14:连接失败

     

Greeter收到:RPC失败。

服务器和客户端正在监听:0.0.0.0:50051。服务器正在运行。 首先,我们只收到服务器上的数据包,客户端崩溃,我用tcpdump检查了它。我们检查了不同的主机以及同一主机,但它不适用于任何一种情况。 我们应该更改不同的IP或不同的端口号吗?

1 个答案:

答案 0 :(得分:1)

我在PC上遇到了同样的问题(操作系统:ubuntu 16.04 LTS,protobuf 3.4.0)

所以我搜索原因并找到了:

原因

  

如果在linux机器上,环境配置了通常的“http_proxy”环境变量,gRPC会在尝试连接时考虑到这一点,但是,然后会继续忽略配套的no_proxy设置:

     

例如:

$ env
http_proxy=http://106.1.216.121:8080
no_proxy=localhost,127.0.0.1

$ ./greeter_client
D0306 16:00:11.419586349 1897 combiner.c:351] C:0x25a9290 finish old_state=3
D0306 16:00:11.420527744 1896 tcp_client_posix.c:179] CLIENT_CONNECT: ipv4:106.1.216.121:8080: on_writable: error="No Error"
D0306 16:00:11.420567382 1896 combiner.c:145] C:0x25a69a0 create
D0306 16:00:11.420581887 1896 tcp_client_posix.c:119] CLIENT_CONNECT: ipv4:106.1.216.121:8080: on_alarm: error="Cancelled"
I0306 16:00:11.420617663 1896 http_connect_handshaker.c:319] Connecting to server 127.0.0.1:50051 via HTTP proxy ipv4:106.1.216.121:8080
  

基本上,即使localhost位于no_proxy列表中,它也使用http_proxy url进行连接。由于no_proxy的默认值包括大多数linux机器上的localhost;最终结果是,配置了http_proxy的任何用户将永远无法连接到localhost。 --- [1]

其他solution

  

您可以使用启用grpc跟踪   export GRPC_TRACE=all && ./greeter_server和客户一样。

<强>验证

1号航站楼 enter image description here 2号航站楼 enter image description here

应该做的伎俩

PS。有关GRPC_TRACE - gRPC environment variables

的更多信息

参考

  1. gRPC doesn't respect the no_proxy environment variable