我是 gRPC 框架的新手,我在我的 PC 上创建了一个示例客户端-服务器(引用 this)。
在我的客户端-服务器应用程序中,我实现了一个 simple RPC
service NameStudent {
rpc GetRoll(RollNo) returns (Details) {}
}
客户发送一个RollNo并收到他/她的详细信息,包括姓名、年龄、性别、 parent 姓名和卷号。
message RollNo{
int32 roll = 1;
}
message Details {
string name = 1;
string gender = 2;
int32 age = 3;
string parent = 4;
RollNo rollid = 5;
}
实际的服务器和客户端代码是对示例代码解释的改编 here
现在我的服务器可以监听 “0.0.0.0:50051(address:port)” 并且客户端可以在 “localhost:50051” 上发送 roll no em> 并接收详细信息。
我想查看在客户端和服务器之间传输的实际二进制数据。我试过使用 Wireshark,但我不明白我在这里看到的是什么。
需要帮助理解 wireshark 或任何其他可用于查看二进制数据的方式。
最佳答案
Wireshark 使用该端口来确定如何解码通信,并且它不知道与 50051 关联的任何协议(protocol)。因此您需要将其配置为将其视为 HTTP。
右键单击一行并在上下文菜单中选择“解码为...”。
然后将“当前”设置为“HTTP”或“HTTP2”(HTTP 通常会自动检测 HTTP2)并点击“确定”。
然后 HTTP/2 帧应该被解码。如果使用最新版本的 Wireshark,您可能还会看到解码的 gRPC 帧。
关于c++ - 获取从 grpc 客户端传输的二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55015732/