端口被占用到底是谁干的?我做了个 Windows 小工具: Aneiang.PortProcessManager(端口管理器)

做开发这些年,被“端口占用”折磨的次数可能比写单元测试还多:

  • 项目启动报错:Address already in use
  • 端口明明关了,怎么还在?
  • netstat -ano 找到 PID 之后,还得再去任务管理器/命令行查进程名、路径、用户
  • 结束了进程,端口又卡在 TIME_WAIT,你不确定到底是“没释放”还是“正常回收中”

这些问题的本质其实很简单:我们缺一个足够直接、足够快、信息足够完整的“端口↔进程”可视化工具

于是我写了一个轻量的 WPF 小工具:PortProcessManager。它的目标是把排查链路缩短到 10 秒以内:

扫描 → 搜索 → 定位进程 → 一键结束 → 结果验证

并且:支持中英文界面一键切换(无需重启)


1. 这个工具解决什么问题?

1)一眼看清“谁占了我的端口”

工具会实时扫描本机端口占用情况,并把端口关联到具体进程信息,包括:

  • TCP / UDP(IPv4)
  • 本地地址 / 端口、远程地址 / 端口
  • TCP 连接状态(LISTENING / ESTABLISHED / TIME_WAIT …)
  • PID、进程名、进程完整路径、运行用户、应用图标

你不再需要:
netstat -ano → 复制 PID → 打开任务管理器 → 找 PID → 再去属性里找路径(而且还经常看不到)。

2)模糊搜索 + 自动刷新:排查效率明显提升

  • 支持按端口号、PID、进程名、地址关键字模糊搜索
  • 支持 5 秒自动刷新,适合抓瞬时连接变化/端口“闪现”问题

3)按进程分组:同一个程序开了哪些端口一目了然

很多时候你关心的不是“某个端口”,而是“某个程序干了什么”。
分组模式会把同一进程(或同一路径)相关连接聚合起来,你可以:

  • 展开/折叠组
  • 直接对“组”进行清理(批量结束)

4)系统保护 + 闭环检测:避免误杀,也避免“杀了但没效果”

内置了两类机制:

  • 系统保护白名单:自动拦截对关键系统服务(例如 SystemIdlelsass 等)的结束请求
  • 闭环检测:结束进程后自动跟踪端口结果,提示是否已释放或处于 TIME_WAIT

5)中英文切换:无需重启,切换立即生效

我把界面做成了运行时本地化:

  • 顶部右侧语言下拉框固定显示:中文 / English
  • 切换语言后界面文案立即更新
  • 语言选择会自动保存,下次启动保持上次选择

2. 运行预览

ScreenShot_2026-02-12_122946_220
ScreenShot_2026-02-12_123037_954

3. 技术实现(给想参考实现的同学)

这是一个 .NET 8 + WPF 项目,整体遵循 MVVM

  • MVVM 框架CommunityToolkit.Mvvm
  • 端口/连接获取:调用 iphlpapi.dll (GetExtendedTcpTable/GetExtendedUdpTable)。
  • 用户信息补全:结合 Windows 相关 API 获取进程运行用户、程序图标等。
  • 运行时本地化:通过自定义 LocalizationManager 实现 XAML 绑定字符串的实时刷新。

4. 获取方式


💡 欢迎试用与反馈

如果你经常被端口占用问题打断节奏,希望这个工具能帮你节省时间。欢迎在评论区或 GitHub 提 Issue!

posted @ 2026-02-25 17:04  Caco_D  阅读(0)  评论(0)    收藏  举报