用 Rust 写的 TCP/UDP 调试工具 NetAssistant v1.1.1:多语言、HEX 编辑器、内置压测

NetAssistant v1.1.1 发布:新增多语言界面、HEX 十六进制编辑器、客户端本地地址/端口绑定,内置 TCP/UDP 高并发压测引擎,附完整更新说明与下载地址。

用 Rust 写的 TCP/UDP 调试工具 NetAssistant v1.1.1:多语言、HEX 编辑器、内置压测

距离 v1.0.0 正式版发布刚过去一个月,NetAssistant 保持快速迭代,今天正式推出 v1.1.1。新版本针对多网卡环境、二进制报文编辑、多语言、Linux 分发等真实调试场景做了重点增强,并修复了一批用户反馈的稳定性问题。

🧰 它能做什么?

如果你是第一次听说 NetAssistant:它是一个用 Rust + GPUI 构建的跨平台(Windows / Linux / macOS)网络调试工具,启动 < 100ms,空闲内存 < 20MB。已有核心能力包括:

  • TCP/UDP 客户端与服务端,IPv4/IPv6 双栈,多标签页同时管理多个连接
  • 四种 TCP 解码器(原始数据 / 换行符 / 长度前缀 / JSON),解决粘包问题,切换解码器无需断开重连
  • 聊天式报文记录:毫秒级时间戳、等宽字体、文本/十六进制双模式,消息支持复制、收藏备注、关键字搜索
  • 日志与导出:收发消息实时异步落盘日志,随时导出 TXT / JSON / CSV
  • UDP 设备发现优化:接收广播回复不丢包,非预期地址的回复红色高亮,物联网/上位机调试友好
  • 内置高并发压测引擎:TCP/UDP 压测,QPS、p50/p95/p99 延迟分位数、失败原因分类、CSV 报告导出
  • 自动回复、周期发送、暗黑模式、连接配置持久化

🆕 本次更新了什么?

一个月内的三个版本,核心改动一览:

版本 日期 核心内容
v1.0.1 2026-08-25 压测报文支持插入动态变量、修复压测 UI 卡顿、Linux AppImage 构建
v1.1.0 2026-08-31 中英文双语界面(i18n)、HEX 十六进制编辑器、压测面板滚动优化
v1.1.1 2026-09-13 客户端本地地址/端口绑定、TCP 监听重构、多项性能优化与稳定性修复

下面挑重点展开说。

🔌 客户端本地地址 / 端口绑定(v1.1.1 主打)

这是实际调试中被反复问到的需求:电脑上插着多块网卡(有线内网 + Wi-Fi + 虚拟网卡),发出去的包到底走哪张网卡?以前由操作系统自动选路,无法控制。

v1.1.1 在新建/编辑连接的「更多设置」中新增了两个可选项:

  • 本地地址:指定从本机哪个 IP 发出数据,仅支持填写本机 IP,不支持域名;留空则由系统自动选择网卡
  • 本地端口:固定源端口;留空则由系统自动分配临时端口

连接成功后,左侧信息面板会显示实际生效的本地端点(本地 IP:端口),绑定结果一目了然。旧版本保存的连接配置可以无损加载,不需要任何迁移。

什么场景下需要手动绑定?

  • 多网卡 / 多网段环境:电脑同时连着公司内网和设备专网,需要确保调试报文从指定网卡发出
  • 对端按源地址过滤:部分服务端或硬件设备会校验数据包的源 IP / 源端口(白名单、防火墙策略),必须用固定地址才能通信
  • 模拟特定来源:复现「只有某个 IP 的客户端才出问题」这类 bug
  • 固定源端口联调:对端只向约定端口回数据时,可以锁定本地端口

普通场景下留空即可,设置项里也做了明确的提示文案,不会给新用户增加负担。

🧮 全新 HEX 十六进制编辑器

调试私有二进制协议时,在文本框里敲 0A0B0C 这种十六进制字符串,既容易看错字节偏移,也不方便修改中间的某个字节。v1.1.0 引入了专门的 HEX 编辑器,v1.1.1 又对其渲染性能做了提速。

编辑器采用「十六进制网格 + ASCII 双视图」的经典布局,并提供两种形态:

  • 内联紧凑视图:直接嵌入发送区、自动回复等面板,快速查看和编辑短报文
  • 展开编辑器:点击展开后获得完整的大窗口,每行 16 字节、带偏移量列,适合编辑长报文

编辑体验上支持:

  • 光标在字节间自由移动,nibble(半字节)级输入改写,键盘上下左右导航
  • 空内容下也有可见的「幻影光标」,点开直接键入即可,不会出现「点了没反应」
  • 工具栏支持一键清空、复制全部、从文件导入

HEX 十六进制编辑器

底层采用纯逻辑 / 渲染 / 适配三层结构,解析结果带缓存,不会每次界面重绘都重新解析报文;v1.1.1 针对大报文编辑场景进一步优化,长报文输入也能保持流畅。

🌍 中英文双语界面

v1.1.0 起界面全面国际化,基于 rust-i18n 重构了全部界面文案——标题栏、对话框、面板、提示信息均支持双语,目前提供:

  • 简体中文
  • English

点击标题栏的语言切换按钮即可一键切换,无需重启。如果有外语好的朋友愿意帮忙补充其他语种(日语、韩语等),欢迎来 PR。

⚡ 压力测试体验增强

压测功能在 v1.0.0 上线后收到了大量真实使用反馈,这一个月做了三项改进:

  • 报文配置支持插入变量:编辑压测报文时可以直接通过变量选择器插入 ${seq}、${worker_id}、${counter}、${timestamp}、${uuid}、${random:min:max},不用再手抄变量名,手滑写错的概率大大降低
  • 修复压测 UI 卡顿:高并发压测时界面偶发卡顿的问题已修复
  • 压测面板支持滚动:配置项较多的小屏幕下,压测配置对话框和结果面板都可以完整滚动查看,交互也做了优化

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

压力测试结果

🛠️ 稳定性修复与性能优化

工具类软件,稳定比花哨更重要。这个周期重点修了几个影响日常使用的问题:

  • TCP 监听重构:重构了 TCP 服务端的监听实现,修复了特定情况下 TCP 接收消息异常的问题
  • 修复 UDP Socket 泄漏:修复了 UDP 停止压测/停止服务后 Socket 没有正确释放的问题——以前停止后立刻重新启动可能遇到「端口被占用/绑定失败」,现在可以放心反复启停
  • 日志批量刷写:高消息量场景下日志改为批量异步刷盘,IO 不再成为瓶颈
  • 消息展示惰性计算:消息显示格式改为按需计算,大量消息堆积时 CPU 占用更低
  • 压测延迟直方图提速:Ping-Pong 模式下 p50/p95/p99 的统计开销进一步降低

另外,「用自己的压测引擎压自己」依然是我们发现性能问题的土办法,目前高并发消息场景下 UI 保持 60fps,启动 < 100ms、空闲内存 < 20MB 的轻量特性继续保留。

🐧 Linux AppImage 分发

v1.0.1 修复了 Linux 版本的 AppRun / GTK 依赖问题,现在除了 tar.gz 之外,Linux 用户还可以下载 AppImage 单文件包,下载加可执行权限后双击即用,免去解压和依赖烦恼。

📦 安装与升级

Windows(推荐)

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

# 升级到最新版
winget upgrade SunJary.NetAssistant

Linux / macOS

从官网下载页或 GitHub Release 页面下载对应平台的安装包(Linux 提供 tar.gz 与 AppImage):

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

🔮 后续

功能还在持续迭代中,如果你有想要的协议支持或功能改进,欢迎在 GitHub Issues 提需求。

💡 最后

这个项目最初只是我自己调试网络程序时顺手写的小工具,从 v0.1.0 的基础 TCP/UDP 通信,到压测引擎、收藏导出、HEX 编辑器,每一个功能几乎都来自真实调试场景里的「痛点」。感谢 v1.0.0 发布后在 GitHub 提 Issue、给反馈的朋友,这个版本里的多项改动(多网卡绑定、TCP 接收修复、UDP 端口释放)都是被你们的反馈推着做出来的。

如果 NetAssistant 帮你省下了调试时间,欢迎给个 ⭐️ 支持,这对持续维护非常重要:

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

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


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

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