使用grpc
ServerBuilder
班级。从
the examples provided
const std::string server_address = "0.0.0.0:12345";
int tcp_port;
grpc::ServerBuilder builder;
builder.AddListeningPort(server_address, grpc::InsecureServerCredentials(), &tcp_port);
builder.RegisterService(&myservice);
auto server(builder.BuildAndStart());
std::cout << "port=" << tcp_port << std::endl;
server->Wait();
不管我想用什么
server_address
tcp_port
始终为零,并且调用netstat查看所有侦听端口确认我的应用程序没有在任何地方侦听。
这个
AddListeningPort()
here
.
到目前为止我尝试过的地址示例:
[::1]:54321
dns:///[::1]43210
dns:///::1:
::1
::1:
0.0.0.0:12345
localhost
localhost:7525
127.0.0.1
127.0.0.1:9876
(我尝试了几十个随机端口号,不仅仅是这里的端口号,netstat确认我没有任何绑定到这些端口的东西。)
有没有办法从grpc获得更多信息?似乎没有任何API可供调用
grpc::Server
也不是
grpc::ServerBuilder
获取错误代码、状态信息等。
编辑:
对于将来在google上搜索grpc相关内容的人,我编辑了示例代码来移动
std::cout
BuildAndStart()
(谢谢@Botje)
netstat -q -b -n -p tcp
netstat -q -b -n -p tcpv6
由于地址与此ipv6环回类似:
[::1]:12345
请注意,您可以多次调用它,因此现在我使用类似于以下几行的内容:
builder.AddListeningPort("127.0.0.1:12345", grpc::InsecureServerCredentials(), &tcp4_port);
builder.AddListeningPort("[::1]:12345", grpc::InsecureServerCredentials(), &tcp6_port);