一、查看本地端口状态
CMD的netstat命令可以查看本地端口的状态,操作命令如下:
netstat -ano
其中,-a表示显示所有选项,-n表示不使用别名,-o表示显示一列“进程标识符”(PID)。
执行该命令后,CMD会输出所有正在使用的端口及其对应的PID号,如下所示:
协议 本地地址 外部地址 状态 进程标识符
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 716
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 127.0.0.1:5354 0.0.0.0:0 LISTENING 1404
TCP 127.0.0.1:27015 0.0.0.0:0 LISTENING 5884
TCP 192.168.1.2:139 0.0.0.0:0 LISTENING 4
可以看到,该命令列出了所有正在使用的TCP和UDP端口及其状态,以及对应的PID号。通过PID号可以查找到该端口是哪个程序在使用。
二、查看指定端口状态
若想查看指定端口的状态,可以使用命令
netstat -ano | findstr ":端口号"
例如,要查看端口号为80的状态,可以输入
netstat -ano | findstr ":80"
CMD将输出所有使用端口号为80的连接以及它们的状态和PID号,如下所示:
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4
TCP 192.168.1.2:80 192.168.1.100:1234 ESTABLISHED 4524
TCP 192.168.1.2:80 192.168.1.100:1235 ESTABLISHED 4524
可以看到,其中一个连接处于LISTENING状态,即该端口正在等待客户端连接;另外两个连接处于ESTABLISHED状态,即与客户端已建立连接。
三、查看远程主机端口状态
如果想查看远程主机的端口状态,可以使用命令:
netstat -an | findstr "远程主机IP:端口号"
其中,-a表示显示所有选项,-n表示不使用别名。
例如,要查看192.168.1.100主机上端口号为80的连接,可以输入
netstat -an | findstr "192.168.1.100:80"
CMD将输出所有与该主机建立的连接以及它们的状态和本地端口号,如下所示:
TCP 192.168.1.2:1234 192.168.1.100:80 ESTABLISHED
TCP 192.168.1.2:1235 192.168.1.100:80 ESTABLISHED
可以看到,本地主机与远程主机192.168.1.100的端口号为80的连接分别处于ESTABLISHED状态。
四、查看端口所属的进程
可以使用Tasklist命令查看所有进程及其对应的PID号,操作命令如下:
tasklist
其中,/FI表示筛选程序,/FI "PID eq 进程标识符"表示按进程标识符筛选进程名称。
例如,要查看进程标识符为6888的进程名称,可以输入
tasklist /FI "PID eq 6888"
CMD将输出指定PID号的进程名称和进程所在路径,如下所示:
映像名称 PID 会话名 会话# 内存使用
SystemIdleProcess 0 Services 0 16 K
System 4 Services 0 7,936 K
smss.exe 340 Services 0 288 K
csrss.exe 556 Services 0 4,116 K
wininit.exe 628 Services 0 4,940 K
services.exe 688 Services 0 12,468 K
...
可以看到,PID号为6888的进程名称为services.exe。
结合第一条命令的输出结果,可以根据PID号找到具体哪个程序在使用指定的端口。
五、关闭指定端口的连接
如果想关闭指定端口的连接,可以使用命令:
taskkill /F /PID 进程标识符
其中,-F表示强制终止进程。
例如,想关闭PID号为4524的进程,可以输入
taskkill /F /PID 4524
此时,命令提醒用户关闭进程可能导致数据丢失,是否继续终止。若确认关闭,回车即可。
如需一次性关闭所有使用指定端口的进程,可以使用如下命令:
for /f "skip=1 tokens=2" %a in ('netstat -ano ^| findstr ":端口号"') do taskkill /f /pid %a
其中,%a是一个变量,用于保存netstat -ano命令输出结果中PID号所在位置的第2列数据。
六、结语
CMD的netstat和tasklist命令可以方便地查看本地和远程主机的端口状态及其对应进程的信息,并且可以通过taskkill命令关闭指定端口的连接。在编写和调试网络程序时,这些命令可以提高效率,快速定位问题。