用 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(半字节)级输入改写,键盘上下左右导航
- 空内容下也有可见的「幻影光标」,点开直接键入即可,不会出现「点了没反应」
- 工具栏支持一键清空、复制全部、从文件导入

底层采用纯逻辑 / 渲染 / 适配三层结构,解析结果带缓存,不会每次界面重绘都重新解析报文;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(推荐)
|
|
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 — 让网络调试更简单