有没有一种方法可以从Windows命令行检查特定端口的状态?我知道我可以使用netstat来检查所有端口,但netstat很慢,而查看特定的端口可能不是。


当前回答

使用lsof命令"lsof -i tcp:port #",例如:

$ lsof -i tcp:1555 
COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
java    27330 john  121u  IPv4 36028819      0t0  TCP 10.10.10.1:58615->10.10.10.10:livelan (ESTABLISHED)
java    27330 john  201u  IPv4 36018833      0t0  TCP 10.10.10.1:58586->10.10.10.10:livelan (ESTABLISHED)
java    27330 john  264u  IPv4 36020018      0t0  TCP 10.10.10.1:58598->10.10.10.10:livelan (ESTABLISHED)
java    27330 john  312u  IPv4 36058194      0t0  TCP 10.10.10.1:58826->10.10.10.10:livelan (ESTABLISHED)

其他回答

为了改进@EndUzr的回复:

要查找外部端口(IPv4或IPv6),您可以使用:

netstat -an | findstr /r /c:":N [^:]*$"

要查找本地端口(IPv4或IPv6),您可以使用:

netstat -an | findstr /r /c:":N *[^ ]*:[^ ]* "

其中N为您感兴趣的端口号。“/r”开关告诉它将其作为regexp处理。“/c”开关允许findstr在搜索字符串中包含空格,而不是将空格作为搜索字符串分隔符。这种增加的空间可以防止更长的端口被滥用——例如,“:80”vs“:8080”和其他端口修改问题。

列出到本地RDP服务器的远程连接,例如:

netstat -an | findstr /r /c:":3389 *[^ ]*:[^ ]*"

或者查看谁在触摸您的DNS:

netstat -an | findstr /r /c:":53 *[^ ]*:[^ ]*"

如果你想排除本地端口,你可以使用一系列带有“/v”的异常,并使用反斜杠转义字符:

netstat -an | findstr /v "0.0.0.0 127.0.0.1 \[::\] \[::1\] \*\:\*" | findstr /r /c:":80 *[^ ]*:[^ ]*"

这对你有帮助

netstat -atn | grep <port no>          # For tcp
netstat -aun | grep <port no>           # For udp
netstat -atun | grep <port no>          # For both

使用lsof命令"lsof -i tcp:port #",例如:

$ lsof -i tcp:1555 
COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
java    27330 john  121u  IPv4 36028819      0t0  TCP 10.10.10.1:58615->10.10.10.10:livelan (ESTABLISHED)
java    27330 john  201u  IPv4 36018833      0t0  TCP 10.10.10.1:58586->10.10.10.10:livelan (ESTABLISHED)
java    27330 john  264u  IPv4 36020018      0t0  TCP 10.10.10.1:58598->10.10.10.10:livelan (ESTABLISHED)
java    27330 john  312u  IPv4 36058194      0t0  TCP 10.10.10.1:58826->10.10.10.10:livelan (ESTABLISHED)
netstat -a -n | find /c "10.240.199.9:8080"

它会告诉你在特定IP和端口上活动的套接字的数量(服务器端口号)

对于80端口,命令是:netstat -an | find "80" 对于端口n,命令如下:netstat -an | find "n"

这里,netstat是计算机的指令

-a:显示所有连接和监听端口 -n:以数字格式显示所有地址和指令(这是必需的,因为-a的输出可能包含机器名)

然后,一个find命令来“模式匹配”前一个命令的输出。