获取grpc客户端传输的二进制数据

RC0*_*993 3 c++ client-server wireshark server grpc

我是 gRPC 框架的新手,我在我的 PC 上创建了一个示例客户端服务器(参考this)。

在我的客户端-服务器应用程序中,我实现了一个简单的 RPC

service NameStudent {
  rpc GetRoll(RollNo) returns (Details) {}
}
Run Code Online (Sandbox Code Playgroud)

客户发送RollNo并接收他/她的详细信息,其中包括姓名、年龄、性别、父母姓名和 Roll No。

message RollNo{
    int32 roll = 1;
}

message Details {
    string name = 1;
    string gender = 2;
    int32 age = 3;
    string parent = 4;
    RollNo rollid = 5;
}
Run Code Online (Sandbox Code Playgroud)

实际的服务器和客户端代码是根据此处解释的示例代码改编的

现在我的服务器能够监听“0.0.0.0:50051(地址:端口)”,客户端能够在“localhost:50051”上发送卷号并接收详细信息。

我想查看客户端和服务器之间传输的实际二进制数据。我尝试过使用 Wireshark,但我不明白我在这里看到的是什么。

这是wireshark捕获的截图 Wireshark 截图

以下是上面屏幕截图中突出显示的条目的详细信息。 细节

需要帮助理解此处的wireshark,或任何其他可用于查看二进制数据的方式。

Eri*_*son 7

Wireshark 使用端口来确定如何解码通信,并且它不知道与 50051 关联的任何协议。因此您需要将其配置为将其视为 HTTP。

右键单击一行并在上下文菜单中选择“解码为...”。

即将单击上下文菜单中的“解码为”

然后将“当前”设置为“HTTP”或“HTTP2”(HTTP 通常会自动检测 HTTP2)并单击“确定”。

将“HTTP”设置为内容后

然后应该对 HTTP/2 帧进行解码。如果使用最新版本的 Wireshark,您还可能会看到已解码的 gRPC 帧。

解码为 HTTP/2