Windows10下如何验证gRPC发送至localhost指定端口的消息是否到达?
在Windows10上验证gRPC消息是否送达localhost:8000的方法
1. 抓包工具分析(Wireshark)
- 打开Wireshark,选择本地回环接口
Loopback: lo0 - 设置过滤规则:
tcp port 8000,仅显示8000端口的流量 - 运行集成测试后,观察抓包结果:
- 确认存在
SYN/SYN-ACK/ACK三次握手包,证明连接已建立 - 查找包含gRPC消息的数据包(gRPC基于HTTP/2,通常带有
PRI * HTTP/2.0头帧或后续DATA帧) - 右键数据包选择「Follow -> TCP Stream」,查看完整交互内容,确认文本消息是否在其中
- 确认存在
2. 修改客户端代码添加接收日志
在gRPC客户端的消息处理逻辑中添加日志输出,直接验证接收情况:
// 以同步Stub调用为例 auto response = stub->SendMessage(&context, request); if (response.ok()) { // 控制台打印接收到的消息 std::cout << "已收到消息:" << response->message() << std::endl; // 写入日志文件持久化记录 std::ofstream log_file("client_receive.log", std::ios::app); log_file << "[" << std::chrono::system_clock::now() << "] 收到消息:" << response->message() << std::endl; }
运行测试后,查看控制台输出或日志文件,确认消息是否被正确接收。
3. 用netstat确认端口连接状态
打开命令提示符或PowerShell,执行命令:
netstat -ano | findstr ":8000"
查看输出结果:
- 若存在
ESTABLISHED状态的条目,说明测试程序与客户端已建立TCP连接 - 可通过PID匹配对应的进程,确认是你的测试程序和目标客户端进程
4. 启用gRPC内置日志
在客户端代码中开启gRPC详细日志(编译时需启用gRPC日志功能):
// 程序启动时添加 gpr_set_log_verbosity(GPR_LOG_SEVERITY_DEBUG);
运行客户端后,查看控制台输出的日志,其中会包含消息接收的详细流程,可直接确认消息是否被处理。
内容的提问来源于stack exchange,提问作者David Hovsepyan
相关产品推荐
相关产品推荐

