1. 单一端口占用

本模块涵盖从常规进程查杀到系统级服务(WinNAT)冲突的完整解决方案。

1.1 常规排查与终止 (通用方案)

适用于 Apache、Nginx、MySQL 等常规软件无法启动的情况。

  • 第一步:侦查 (Identify) 查看指定端口(如 80)的占用情况,获取 PID。

    netstat -ano | findstr :80
    
  • 第二步:验身 (Define) 根据 PID(假设为 3520)确认进程真实名称(防止误杀系统服务)。

    tasklist /fi "pid eq 3520"
    
  • 第三步:处置 (Act) 强制结束目标进程。

    taskkill /PID 3520 /F
    

    注意:如果进程不断重启(如 WPS 的 OfficeNginx.exe),建议修改自身软件的端口配置(如改用 8080),而非死磕。

1.2 系统保留端口冲突 (WinNAT)

当端口未被显式占用,却提示“访问被拒绝”或“端口被排除”时,通常是 Windows NAT 服务(Hyper-V/WSL)保留了端口。

  • 操作步骤: 以 管理员身份 运行命令提示符,重启 WinNAT 服务以释放临时端口池。

    net stop winnat
    net start winnat
    

1.3 Java 进程专属

针对 Java 应用程序(Tomcat, Spring Boot, Burp Suite),通用任务管理器可能只显示 java.exe,无法区分具体应用。

  • 强烈建议: 使用 JDK 自带工具查看完整的 Java 进程类名。

    jps -l
    

2. 端口集群占用

根据您提供的最后一张截图,我们发现了两个决定性的证据,彻底推翻了之前的“僵尸进程”假设。

2.1 关键证据分析

  • netstat 为空:运行 netstat -ano | findstr 10810 返回空结果,说明当前没有任何软件(包括白鲸加速器或 svchost)在使用该端口。

  • netsh 拒绝访问:尝试运行 netsh int ipv4 add excludedportrange protocol=tcp startport=10810 numberofports=1 时提示“进程无法访问”。

2.2 断定系统端口

这表明 Windows 系统的动态端口范围(Dynamic Port Range)发生了偏移。系统为了运行 Hyper-V、WSL 或容器服务,随机圈定了一大块端口(例如 10000-11000)作为“保留区”。您的 10810 端口不幸落在了这个系统保留区内,导致任何第三方应用都无法绑定,且无法通过查杀进程解决。

2.3 迁移动态端口池

既然系统霸占了低位端口,最彻底的解决办法是将 Windows 的“随机取号”起始位置调高,将其迁移至 49152 之后(IANA 建议的动态端口标准),从而把 10810 彻底释放出来。

2.3.1 执行核心指令

请严格按照以下步骤操作,此操作只需执行一次,永久有效。

  • 启动管理员终端:右键点击开始菜单,选择 Windows PowerShell (管理员)命令提示符 (管理员)

  • 修改动态端口范围:复制并运行以下命令(直接回车):

netsh int ipv4 set dynamicport tcp start=49152 num=16384
  • 指令解析:该命令强制 Windows 将动态端口的起始号设定为 49152,总数设定为 16384 个。这能确保系统永远不会再去触碰 10810 所在的低位区域。

2.3.2 重启生效

  • 必须重启:修改底层网络策略后,Windows 不会立即释放已经被锁定的端口。您必须重启电脑才能让新策略生效。

  • 验证结果:重启后,直接打开白鲸加速器。此时 10810 端口已处于“安全区”,软件应能直接启动成功,不再报错。

2.4 备选与后续维护

如果再次遇到端口问题,可先运行以下命令查看当前的动态端口范围:

netsh int ipv4 show dynamicport tcp
  • 正常状态:如果显示的“启动端口”是 49152,说明配置正常。

  • 异常状态:如果显示的“启动端口”是 1024 或其他小数值,说明配置被重置,请重新执行 2.3.1 中的指令。