mrun1corn/portview
GitHub: mrun1corn/portview
一款 Windows CLI 工具,用于列出所有活动的 TCP/UDP 端口、关联所属进程,并显示每个连接的流量统计信息。
Stars: 0 | Forks: 0
# portview
一款 Windows CLI 工具,用于列出所有打开的 TCP/UDP 端口,将它们映射到对应的所属进程,并显示每个连接的流量统计信息。




## 功能
- 📋 列出所有处于活动状态的 **TCP 连接**及其状态(LISTENING、ESTABLISHED、TIME_WAIT 等)
- 📋 列出所有 **UDP 监听器**
- 🔍 将每个端口映射到其**所属进程**(PID + 可执行文件名)
- 📊 显示**每个连接的流量统计信息** —— 发送和接收的字节数(需要提权)
- 📈 包含连接数和最活跃通信者的**摘要**
- ⚡ 单一二进制文件,**零外部依赖** —— 仅基于 Windows SDK 构建
## 示例输出
```
portview v1.3 — Windows Port & Traffic Reviewer
TCP Connections (14 active)
PORT REMOTE STATE PID PROCESS SENT RECV
443 142.250.80.46:443 ESTABLISHED 8124 chrome.exe 12.4 KB 156.2 KB
5432 127.0.0.1:5432 ESTABLISHED 3200 postgres.exe 1.1 MB 3.4 MB
8080 0.0.0.0:* LISTENING 9012 node.exe — —
UDP Listeners (6 active)
PORT PID PROCESS
53 1124 svchost.exe
5353 8124 chrome.exe
Summary: 14 TCP | 6 UDP | Top talker: chrome.exe (168.6 KB)
```
## 构建
### 前置条件
- Windows 10/11
- CMake 3.15+
- MSVC (Visual Studio 2019+) 或 MinGW-w64
### 步骤
```
mkdir build && cd build
cmake ..
cmake --build . --config Release
```
输出的二进制文件是 `build/Release/portview.exe`。
## 用法
```
# 基本 — 启动具有实时刷新和滚动的交互式 UI
portview.exe
# 静态快照 — 输出单个表格捕获(非交互式)
portview.exe --static
# 带流量统计 — 以管理员身份运行
# 右键点击终端 → “以管理员身份运行”
portview.exe
```
### 交互控制
- **方向键 上/下**:逐行滚动列表
- **Page Up/Down**:逐页滚动列表
- **Home/End**:跳转到列表的顶部/底部
- **Esc/Q**:退出应用程序
## 工作原理
1. 调用 `GetExtendedTcpTable` / `GetExtendedUdpTable` 来枚举所有连接
2. 通过 `QueryFullProcessImageNameW` 将每个 PID 解析为进程名
3. 如果已提权,则使用 `SetPerTcpConnectionEStats` 启用每连接统计信息收集
4. 通过 `GetPerTcpConnectionEStats` 读取流量数据
5. 格式化并打印表格
所有 API 均来自 Windows SDK(`iphlpapi.h`、`ws2_32.h`)—— 无需第三方库。
## 项目结构
```
portview/
├── CMakeLists.txt # Build configuration
├── main.cpp # All source code
├── README.md # This file
├── PLAN.md # Project plan and architecture
├── TODO.md # Development checklist
└── LICENSE # MIT License
```
## 许可证
MIT
标签:Bash脚本, C++17, HTTP头分析, Windows, 安全意识培训, 端口管理, 进程信息