如何在Windows上查找监听TCP或UDP端口的进程?

3244

如何在Windows系统中查找监听TCP或UDP端口的进程?


9
CurrPorts 是一款帮助搜索和筛选的工具。网址为 https://www.nirsoft.net/utils/cports.html。 - Blue Clouds
3
在尝试在IntelliJ下以调试模式运行Tomcat时,我遇到了这个问题。对我来说最好的解决方案是更改调试传输配置(文件->设置->构建/执行/部署->调试器)从“socket”改为“共享内存”。 - TMN
103
将端口号8080替换为其他端口号后,运行命令netstat -aof | findstr :8080 - David Jesus
5
OT: 很有趣看到关于Windows的第一个问题被标记为不相关... - IT M
9
为什么这个问题被关闭了?这是我见过的最直接的问题。 - Glenn Maynard
显示剩余13条评论
34个回答

14

在命令行中输入以下命令:netstat -aon | findstr :DESIRED_PORT_NUMBER

例如,如果我想查找端口80: netstat -aon | findstr :80

此答案最初发布在这个问题上。


12

使用Windows的默认Shell(PowerShell),无需外部应用程序

对于使用PowerShell的用户,请尝试Get-NetworkStatistics

> Get-NetworkStatistics | where Localport -eq 8000


ComputerName  : DESKTOP-JL59SC6
Protocol      : TCP
LocalAddress  : 0.0.0.0
LocalPort     : 8000
RemoteAddress : 0.0.0.0
RemotePort    : 0
State         : LISTENING
ProcessName   : node
PID           : 11552

1
我认为 Get-NetworkStatistics 不是默认安装的。它返回以下内容:未将项“Get-NetworkStatistics”识别为 cmdlet 的名称。 - Alejandro Sanz Díaz
@AlejandroSanzDíaz 你使用的操作系统和版本是什么? - mikemaccana
Windows 10企业版19044.1526 - Alejandro Sanz Díaz

12

netstat -aonetstat -ab 可以告诉你应用程序的信息,但如果你不是系统管理员,你会收到“所请求的操作需要提升”的提示。

虽然不是理想情况,但如果你使用 Sysinternals 的Process Explorer,你可以进入特定进程的属性并查看 TCP 选项卡,看看它们是否正在使用你感兴趣的端口。这有点像大海捞针,但也许能帮助某些人...


如果您不是管理员,则无法使用Process Explorer(甚至Windows任务管理器>资源管理器)从任何不属于您的进程中获取此信息。 - Abel

10

我推荐NirSoft的CurrPorts

CurrPorts可以过滤显示结果。 TCPView没有这个功能。

注意:您可以右键单击进程的套接字连接并选择“关闭所选TCP连接”(您也可以在TCPView中执行此操作)。 这通常可以解决我在切换VPN后使用Outlook和Lync时遇到的连接问题。 使用CurrPorts,您还可以使用“/close”参数从命令行关闭连接。


10

一个对我有帮助的单行解决方案是这个。只需将 3000 替换为你的端口:

$P = Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess; Stop-Process $P.Id

编辑:将 kill 更改为 Stop-Process,使语言更接近 PowerShell。


6
您可能不希望自动终止该进程。我建议将终止命令单独分开并进行解释。这样可以避免某些用户粗心地复制粘贴该命令。 - TinkerTenorSoftwareGuy
1
如果您要使用完整的PowerShell解决方案,请将kill更改为Stop-Process:Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess | Stop-Process - CubanX

9

请使用以下工具:从cmd命令行窗口中以管理员权限运行C:\> netstat -anob

Process Explorer

Process Dump

Port Monitor

以上工具均可在sysinternals.com上获取。

如果您只想了解每个进程下的运行和线程信息,我建议您学习wmic。这是一个非常好用的命令行工具,可以提供比您想象的更多信息。

示例:

c:\> wmic process list brief /every:5

上述命令将每5秒显示一个简要的进程列表。要了解更多信息,您可以使用Windows的 /?命令,例如,
c:\> wmic /?
c:\> wmic process /?
c:\> wmic prcess list /?

继续等等看,等等再说。:)

PortMon(Port Monitor背后的链接)用于监视串行和并行端口,而不是网络端口。 - James

9

使用:

netstat -a -o

这显示了运行在特定端口上的进程PID。

请记住该进程的ID,然后转到任务管理器和服务或详细信息选项卡,并结束具有相同PID的进程。

因此,您可以在Windows上终止运行在特定端口上的进程。


9

查找正在使用8000端口的进程ID

netstat -aon | findstr '8000'

在Windows中结束进程

taskkill /pid pid /f

pid 是你从第一个命令获取的进程 ID。


1
netstat -aon | findstr 8000. - Ali Rasouli
PID是最后一列中第一个命令返回的值。 - Pran Kumar Sarkar

8
您可以使用以下命令检查保留端口。Hyper-V 例如保留了一些端口。
netsh int ipv4 show excludedportrange protocol=tcp

7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接