如何确定哪个进程正在侦听Windows上的TCP或UDP端口?


当前回答

使用以下工具:从cmd:C:\>netstat-anob,具有管理员权限。

进程管理

过程转储

端口监视器

全部来自sysinternals.com。

如果您只想了解每个进程下的进程运行和线程,我建议您学习wmic。这是一个很棒的命令行工具,它为您提供了比您所能知道的更多的信息。

例子:

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

上述命令将每5秒简要显示一个所有进程列表。要了解更多信息,您可以与/?例如,

c:\> wmic /?
c:\> wmic process /?
c:\> wmic prcess list /?

依此类推。:)

其他回答

如果您想使用GUI工具来实现这一点,可以使用Sysinternals的TCPView。

netstat-aof|findstr:8080(更改任何端口的8080)

使用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

查找使用端口8000的pid

netstat -aon | findstr '8000'

在窗口中终止该进程

taskkill /pid pid /f

其中pid是从first命令中获取的进程id

PowerShell(PowerShell)

TCP

Get-Process -Id (Get-NetTCPConnection -LocalPort YourPortNumberHere).OwningProcess

UDP

Get-Process -Id (Get-NetUDPEndpoint -LocalPort YourPortNumberHere).OwningProcess

cmd

 netstat -a -b

(添加-n以阻止它尝试解析主机名,这将使它更快。)

注意Dane对TCPView的建议。它看起来很有用!

-a显示所有连接和侦听端口。

-b显示创建每个连接或侦听端口所涉及的可执行文件。在某些情况下,众所周知的可执行程序包含多个独立组件,在这些情况下,将显示创建连接或侦听接口所涉及的组件序列。在这种情况下,可执行文件名位于底部的[]中,顶部是它调用的组件,依此类推,直到到达TCP/IP。请注意,此选项可能很耗时,除非您有足够的权限,否则将失败。

-n以数字形式显示地址和端口号。

-o显示与每个连接关联的所属进程ID。