Windows 进程端口占用
端口占用
使用如下命令行,查看端口占用进程。将 port/pid 替换成 端口号或者进程ID。
netstat -ano | findstr port/pid
| 协议 | 本地地址 | 外部地址 | 状态 | PID | 
|---|---|---|---|---|
| TCP | 0.0.0.0:3123 | 0.0.0.0:0 | LISTENING | 53368 | 
| TCP | 127.0.0.1:3123 | 127.0.0.1:13777 | ESTABLISHED | 53368 | 
| TCP | 127.0.0.1:13777 | 127.0.0.1:3123 | ESTABLISHED | 19292 | 
本地地址与外部地址:因为 TCP 是面向连接的。本地地址就是对应进程自己占用的 IP 和端口,外部地址就是连接的远端的 IP 和端口。
进程处理
如果有需要,可以通过 tasklist 进一步查看进程的信息
tasklist /fi "PID eq 35456"
-- OR
tasklist | findstr 35456
映像名称                       PID 会话名              会话#       内存使用
========================= ======== ================ =========== ============
EasiNote.exe                 35456 Console                    1    196,392 K
或者通过 taskkill 杀死进程
/F 表示强制
taskkill /F /PID 35456
-- OR
taskkill /F /IM EasiNote.exe           -- 这个会杀死所有进程名为 `EasiNote.exe` 的进程
端口保留
如果通过 netstat -ano 找不到占用端口的进程,可以通过
netsh interface ipv4 show excludedportrange protocol=tcp
查看被系统保留的端口
C:\> netsh interface ipv4 show excludedportrange protocol=tcp
Protocol tcp Port Exclusion Ranges
Start Port    End Port
----------    --------
      5357        5357
      9800        9800
      9801        9801
     49671       49770
     49871       49970
     50000       50059     *
* - Administered port exclusions.
注意,标记 * 的为 管理的端口排除(Administered port exclusions)
意思是:这些端口不会被系统保留,你可以自己用。
而其它没有标记 * 号的表示:这些端口被系统保留了,你不能使用。
如果发现某个端口使用不了,而且没有找到占用的进程,那有可能这个端口,就是被系统保留了。
常见操作
以管理员身份直接运行 net stop winnat 然后运行 net start winnat,重启 winnat 服务,就能处理大部分端口被意外占用的情况。
这些被系统保留(不能被使用的端口),通常是被 Hyper-V 虚拟机服务占用了。
添加白名单
上面提到,如果端口是 Administered port exclusions,相当于系统白名单,这些端口是不会被系统保留的。
使用如下命令可以将端口添加到 Administered port exclusions
net stop winnat
netsh int ipv4 add excludedportrange protocol=tcp startport=4123 numberofports=5
netsh int ipv4 add excludedportrange tcp 4123 5 -- 简化写法
net start winnat
对应的,移除命令为
netsh int ipv4 delete excludedportrange tcp 4123 5 
另外,如果发现被系统保留的端口意外的多,可以直接运行 net stop winnat 然后运行 net start winnat,说不定就能解决(能够释放大部分被保留的端口)。
关于系统保留端口的更多详情,可以参考:
hyper v - What is Administered port exclusions in windows 10? - Stack Overflow

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号