NetAssistant v1.0.0 正式发布!新增压测、消息收藏、JSON美化等重磅功能

NetAssistant v1.0.0 正式版发布:内置高并发 TCP/UDP 压力测试引擎,实时 QPS 与 p50/p95/p99 延迟统计,新增消息收藏、JSON 美化等重磅功能。

NetAssistant v1.0.0 正式发布!

经过一段时间的迭代和用户反馈,NetAssistant 终于迎来了 v1.0.0 正式版!感谢所有用户的支持和 Issue 反馈,这个版本带来了多项重磅功能和大量体验优化,特别是针对网络调试中常见的痛点做了针对性改进。

项目地址:https://github.com/sunjary/netassistant

🚀 重磅新功能

1. 内置高并发压力测试引擎

这是 v1.0.0 最重量级的功能!现在 NetAssistant 不仅仅是一个调试工具,更内置了专业级的 TCP/UDP 压力测试能力,帮你快速验证服务端性能。

核心特性:

  • 支持 TCP/UDP 协议压测,可配置并发客户端数量和发送速率
  • 实时统计面板:实时展示 QPS(当前/峰值)、总发送/成功/失败数量、活跃连接数(当前/峰值)、断连/重连、收发字节数
  • 延迟分位数(Ping-Pong 模式):p50/p95/p99/平均/最大延迟统计,清晰了解性能分布,精准定位长尾延迟;注意:仅在「Ping-Pong(往返)」模式下显示延迟卡片(该模式发送后等待响应才能统计 RTT),吞吐模式下不采集延迟
  • 变量模板:支持 ${seq}(全局递增序号)、${worker_id}(工作线程ID)、${counter}(线程本地计数器)、${timestamp}(毫秒时间戳)、${uuid}(随机UUID)、${random:min:max}(区间随机整数),构造多样化压测报文;hex模式下数值变量自动输出为十六进制格式
  • 长短连接模式:支持短连接(每次请求新建连接)和长连接压测
  • 令牌桶速率限制:精准控制发送频率,避免突发流量冲击
  • CSV 报告导出:压测结束后导出详细统计报告,便于后续分析
  • 配置自动保存:压测配置自动持久化,下次打开自动回填,常用压测场景无需重复配置
  • 压测引擎采用零 UI 依赖的纯逻辑设计,性能出色

适用场景:

  • 自研服务端并发吞吐、延迟分布、稳定性评估
  • 上线前性能瓶颈定位
  • 极限压力下的鲁棒性测试

配置压力测试(暗黑模式)

压力测试结果

2. 消息收藏与管理

调试过程中遇到关键报文?现在可以一键收藏了!

  • 点击消息上的收藏按钮即可将重要消息加入收藏夹
  • 支持为收藏项添加备注说明,标记这条消息的用途和含义
  • 收藏列表支持关键字搜索,即使收藏了很多消息也能快速定位
  • 收藏配置自动持久化,重启应用不丢失

收藏消息

3. 日志记录与消息导出

重要的调试过程需要留存记录?v1.0.0 提供了两种记录方式,满足不同场景:

日志实时记录:

  • 手动开启:点击「日志记录」开关即可开始记录,再次点击关闭
  • 开启后所有收发消息实时异步写入日志文件(每条消息自动flush落盘),不阻塞 UI
  • 日志文件命名规则:{协议}_{地址}_{端口}_{数字序号}.log,自动递增序号不覆盖
  • 默认保存到 文档/NetAssistant/logs/ 目录
  • 日志路径支持自定义修改,点击旁边的铅笔编辑按钮即可更改保存位置
  • 日志文件名可点击,直接打开日志所在目录
  • 断开连接时自动刷新并关闭日志文件,确保数据完整写入

随时手动导出:

  • 不需要一直记录日志?也可以随时点击导出按钮手动导出当前消息记录
  • 支持三种导出格式:
    • TXT:方便人工阅读和归档
    • JSON:结构化数据,便于程序处理
    • CSV:表格格式,可用 Excel 打开做统计分析
  • 导出包含完整消息历史、时间戳、方向、源地址等信息

4. JSON 格式化与美化

调试 JSON 格式接口时,一长串压缩的 JSON 根本没法看?v1.0.0 提供了完善的JSON格式化功能:

  • 发送端格式化:在文本输入模式下,输入框旁提供「美化」和「压缩」按钮,可以在发送前格式化你要发送的JSON内容
  • 接收端显示切换:顶部工具栏提供「格式:原始/美化/压缩」切换按钮,可以一键切换所有消息的显示格式:
    • 原始:原样显示
    • 美化:2空格缩进换行,层次清晰易读
    • 压缩:去除所有空格换行,紧凑展示
  • 如果内容不是合法JSON,格式化时会原样返回,不会出错

5. UDP 服务端手动添加客户端

UDP 是无连接协议,传统 UDP 服务端只能等客户端先发消息才能回复,现在这个问题解决了:

  • UDP 服务端模式下新增「+添加客户端」按钮
  • 手动输入目标客户端的 IP:端口 地址
  • 添加完成后即可主动向该地址发送数据
  • 内置输入格式校验,错误格式实时提示,防止误输入

UDP 手动添加客户端

6. 连接配置编辑

之前保存的连接配置想改地址端口?不用删除重建了:

  • 已保存的连接配置现在支持直接编辑修改
  • 右键或点击编辑按钮即可修改地址、端口、协议类型等配置
  • 调整配置更方便,不用反复创建删除

✨ 功能增强与体验优化

TCP 解码器大幅优化

粘包问题处理更稳定,配置界面彻底重构:

  • 解码器配置对话框重新设计,参数配置更直观清晰
  • 解码逻辑优化,原始数据、行解码、长度前缀解码、JSON 解码都更稳定
  • 支持更灵活的参数配置,适配更多私有协议格式
  • 切换解码器无需断开重连,实时生效

TCP 解码器

UDP 场景优化(特别针对上位机/物联网设备发现)

这是一个非常贴心的改进,专门为嵌入式和物联网调试设计:

场景说明: 在调试上位机、物联网设备、嵌入式模块时,经常需要向广播地址(如 192.168.1.255)发送设备发现指令,此时局域网内的多个设备会从各自不同的 IP 地址回复响应。

之前的问题: 这些回复的源地址与发送目标(广播地址)不一致,属于"非预期地址",会被过滤或忽略,导致设备发现时根本看不到回复!

v1.0.0 的改进:

  1. UDP 客户端移除了源地址过滤,所有发送到绑定端口的数据包都会正常接收显示,包括广播回复
  2. 对于来自非预期地址的回复,源地址用浅红色高亮显示,鼠标悬停提示「非预期地址的回复」
  3. 这样既不会丢失设备发现的重要响应,又能清晰区分哪些是目标地址的正常回复,哪些是广播场景下其他设备的响应

这个改进让局域网设备发现、多设备响应场景的调试变得顺畅很多!

消息显示优化

  • 消息内容改用 JetBrains Mono 等宽字体,字节对齐更整齐,十六进制和文本模式可读性大幅提升
  • 消息列表渲染性能优化,即使压测产生大量消息,UI 依然保持流畅
  • 消息复制按钮功能恢复并优化,复制更可靠

跨平台体验改进

  • Linux 修复:解决了 GNOME 桌面环境下窗口无法拖动的问题
  • 暗黑/亮色主题切换更流畅,主题跟随系统更及时
  • 应用退出逻辑重构,资源清理更彻底,不会残留后台进程
  • 断开连接时确保 socket 正确关闭,避免端口占用
  • GPUI 框架升级到最新版本,整体渲染性能和稳定性提升

⚡ 性能提升

有意思的是,在开发压力测试功能的过程中,我们用压测功能对 NetAssistant 自身进行了高并发测试,借此发现并修复了多个性能瓶颈:

  • 消息批量处理优化:高并发场景下消息不再逐条触发UI重绘,改为批量更新,大幅降低CPU占用
  • 日志批量写入:高消息量场景下日志异步批量写入,避免IO成为瓶颈
  • 内存优化:优化消息存储结构,长时间高负载运行内存占用更稳定,减少不必要的内存拷贝
  • 压测引擎优化:工作线程调度更高效,支持更高并发
  • 速率限制器优化:令牌桶算法优化,发送速率控制更精准平滑
  • 连接管理性能:大量连接管理时的状态更新更高效

经过这些优化,在高并发消息场景下UI依然保持 60fps 流畅,同时 NetAssistant 的启动速度 < 100ms,空闲内存 < 20MB 的轻量特性也得以保留。

📸 v1.0.0 界面一览

功能 截图
客户端模式 客户端截图
服务端模式 服务端截图
IPv6 支持 IPv6 截图
十六进制模式 十六进制模式截图
折叠模式 折叠模式截图

暗黑模式:

功能 截图
UDP 客户端暗黑模式 UDP 客户端暗黑模式截图
UDP 服务端暗黑模式 UDP 服务端暗黑模式截图

📦 安装与升级

Windows(推荐)

使用 winget 安装或升级:

1
2
3
4
5
# 首次安装
winget install SunJary.NetAssistant

# 升级到 v1.0.0
winget upgrade SunJary.NetAssistant

winget 支持自动更新,后续升级只需一条命令。

其他平台

直接从 GitHub Release 页面下载对应平台的安装包:

👉 https://github.com/sunjary/netassistant/releases

  • Linux:下载 netassistant-linux-x64.tar.gz,解压后运行 ./netassistant
  • macOS:下载压缩包,解压后拖入 Applications 文件夹,首次运行右键选择「打开」

🔮 后续计划

v1.0.0 是一个里程碑,但我们不会停下脚步,后续版本计划:

  • 文件数据源(从文件读取发送内容)
  • 多语言支持
  • 十六进制编辑器
  • SSE 调试支持
  • 更多数据格式的编解码
  • WebSocket 协议支持

欢迎在 GitHub Issues 提出你的需求和建议!

💡 最后

NetAssistant 从 v0.1.0 一路走来,从最初只支持基础 TCP/UDP 通信,到 v1.0.0 加入了压测、收藏、导出、日志等完整功能,感谢所有用户的反馈和贡献。

NetAssistant 的设计理念始终是:简单易用,但功能强大。无论是网络应用开发、物联网设备对接、嵌入式系统调试,还是服务端性能压测,它都能成为你的得力助手。

如果你在使用中遇到任何问题,或者有功能建议,欢迎来 GitHub 提 Issue。

如果这个工具对你有帮助,请给它一个 ⭐️ 支持一下,这对我非常重要!

👉 https://github.com/sunjary/netassistant

祝大家调试愉快,Bug 越来越少!


NetAssistant v1.0.0 — 让网络调试更简单

comments powered by Disqus
使用 Hugo 构建
主题 Stack 由 Jimmy 设计