Port Manager:一个跨平台的桌面端口管理工具
本地开发时总会碰到端口被占的情况。”address already in use” — 然后你打开终端,敲 lsof -i :8080,找到 PID,再 kill -9。三四个命令下来,最后发现是上礼拜跑的一个 Next.js dev server 没关。
这种高频摩擦我受够了,于是写了 Port Manager — 一个跨平台桌面端口管理工具。打开即用,搜索、查看、打开、终止,全在 GUI 里点几下完成。
他能做什么
扫描和搜索。 启动自动扫描本机所有 TCP/UDP 端口占用。按端口号、PID、进程名、本地地址、远程地址搜索,按协议筛选 TCP/UDP/全部。
详细信息。 点击任意端口,展开完整进程细节:PID、父进程 PID、用户、运行时长、启动命令、本地和远程端点。lsof 的输出被结构化成了可读表格。
一键操作。 对监听中的 TCP 端口点一下浏览器图标,自动打开 http://localhost:port。再点一下复制按钮,localhost:port 地址进剪贴板。
终止进程。 确认不需要的进程,点终止按钮释放端口。系统进程需要管理员权限。
分页渲染
大量端口(比如 200+ 条)时不会卡顿。表格做了分页渲染,滚动时只绘制可见行。这个在 Flutter 桌面端不多见 — 大部分 demo 项目直接用全量 ListView,端口一多就掉帧。
跨平台支持
同一份代码库跑在 macOS 和 Windows 上。平台差异通过服务层隔离:
1 | // macOS 用 lsof + ps |
具体实现各平台一个类,编译时按 dart:io 的 Platform 分发。
Release 包在 GitHub Actions 上自动构建。Windows 版本在 CI 的 Windows runner 上编译,macOS 版在本地构建上传。v1.0.0 已提供直接下载的 zip 包。
技术栈
- Flutter 3.x + Dart 3.12+
- Material Design 3
- 平台 channel 调用系统命令行工具
- GitHub Actions CI/CD
项目结构简洁:
1 | lib/ |
安装
从 Releases 页面 下载:
- macOS:
port_manager-macos-v1.0.0.zip,解压后拖入/Applications - Windows:
port_manager-windows-v1.0.0.zip,解压后运行
也可以从源码跑:
1 | flutter pub get |
局限与边界
- “浏览器打开”假设端口上跑的是 HTTP 服务,不是 HTTPS
- Windows 上部分进程详情依赖系统命令可用性
- 终止系统进程可能需要管理员权限
工具定位是本机开发和排障场景,不是运维监控面板。轻量、即时、零依赖。
GitHub: wlxweb/port_manager · MIT License








