如何在 Windows 中找到哪个程序正在使用端口 80? [复制]

Posted

技术标签:

【中文标题】如何在 Windows 中找到哪个程序正在使用端口 80? [复制]【英文标题】:How do I find which program is using port 80 in Windows? [duplicate] 【发布时间】:2010-12-29 23:10:33 【问题描述】:

如何在 Windows 中找到哪个程序正在使用端口 80?

我找不到。

【问题讨论】:

这个问题更适合superuser.com 见How can you find out which process is listening on a port on Windows? 这么多人正在查看这个问题并支持我的回答,我认为我们应该重新考虑打开它 netstat -aof | findstr :80 @Technotronic:您的回答并没有说明这个问题没有很好地涵盖这个问题,例如***.com/a/19255965/103167 【参考方案1】:

输入命令:

netstat -aon | findstr :80

它将显示所有使用端口 80 的进程。注意右侧列中的 pid(进程 ID)。

如果您想释放端口,请转到 Task Manager,按 pid 排序并关闭这些进程。

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

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

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

【讨论】:

并找到运行它的进程:tasklist /svc /FI "PID eq 1348"(感谢@Quang-Trinh) netstat -ano ^| findstr "0.0.0.0:80 检查 Web_Ports_Inspector.bat windowstechinfo.com/2015/05/… 可以关闭连接吗? 释放端口而不杀死进程? 请注意findstr :80会匹配每个端口,包括“80”,所以除了80端口,它还会匹配8009、8080等端口上的程序。【参考方案2】:

开始菜单 → 附件 → 右键单击​​“命令提示符”。在菜单中,单击“以管理员身份运行”(在 Windows XP 上,您可以照常运行),运行 netstat -anb,然后查看程序的输出。

顺便说一句,Skype 默认尝试使用端口 80 和 443 进行传入连接。

您也可以运行netstat -anb >%USERPROFILE%\ports.txt,然后运行start %USERPROFILE%\ports.txt,在文本编辑器中打开端口和进程列表,您可以在其中搜索所需的信息。

您还可以使用 PowerShell 解析 netstat 输出并以更好的方式呈现(或以任何您想要的方式处理它):

$proc = @;
Get-Process | ForEach-Object  $proc.Add($_.Id, $_) ;
netstat -aon | Select-String "\s*([^\s]+)\s+([^\s]+):([^\s]+)\s+([^\s]+):([^\s]+)\s+([^\s]+)?\s+([^\s]+)" | ForEach-Object 
    $g = $_.Matches[0].Groups;
    New-Object PSObject |
        Add-Member @ Protocol =           $g[1].Value   -PassThru |
        Add-Member @ LocalAddress =       $g[2].Value   -PassThru |
        Add-Member @ LocalPort =     [int]$g[3].Value   -PassThru |
        Add-Member @ RemoteAddress =      $g[4].Value   -PassThru |
        Add-Member @ RemotePort =         $g[5].Value   -PassThru |
        Add-Member @ State =              $g[6].Value   -PassThru |
        Add-Member @ PID =           [int]$g[7].Value   -PassThru |
        Add-Member @ Process = $proc[[int]$g[7].Value]  -PassThru;
# | Format-Table Protocol,LocalAddress,LocalPort,RemoteAddress,RemotePort,State -GroupBy @Name='Process';Expression=$p=$_.Process;@$True=$p.ProcessName; $False=$p.MainModule.FileName[$p.MainModule -eq $Null] + ' PID: ' + $p.Id -AutoSize
 | Sort-Object PID | Out-GridView

它也不需要海拔来运行。

【讨论】:

输出太多了,我只想要80端口的信息 netstat -anb | findstr :80 那你要么需要仔细看列表,要么安装一些额外的软件。以technet.microsoft.com/en-us/sysinternals/bb897437.aspx 为例。 Anton,它会砍掉进程名。 @Anton Tykhyy,这样我看不到程序名称,只有数字。【参考方案3】:

如果你想要真正的花哨,从Sysinternals下载TCPView:

TCPView 是一个 Windows 程序,它将 向您展示所有 TCP 的详细列表 和您系统上的 UDP 端点, 包括本地和远程 TCP的地址和状态 连接。在 Windows Server 2008 上, Vista,和 XP,TCPView 也报告 拥有该进程的名称 端点。 TCPView 提供了更多 内容丰富且易于呈现 Netstat 程序的子集 随 Windows 提供。

【讨论】:

【参考方案4】:

使用这个漂亮的免费软件实用程序:

CurrPorts 是网络监控软件,可显示本地计算机上所有当前打开的 TCP/IP 和 UDP 端口的列表。

【讨论】:

【参考方案5】:

右键单击“命令提示符”或“PowerShell”,在菜单中单击“以管理员身份运行”(在 Windows XP 上您可以照常运行)。

正如 Rick Vanover 在 See what process is using a TCP port in Windows Server 2008 中提到的那样

以下命令将显示当前正在使用的网络流量 端口级别:

Netstat -a -n -o

Netstat -a -n -o >%USERPROFILE%\ports.txt

(在文本编辑器中打开端口和进程列表,您可以在其中搜索所需的信息)

那么,

使用 netstat 输出中列出的 PID,您可以跟进 Windows 任务管理器 (taskmgr.exe) 或运行具有特定 PID 的脚本 即使用上一步中的端口。然后,您可以使用 “tasklist”命令,具有对应于端口的特定 PID 问题。

例子:

tasklist /svc /FI "PID eq 1348"

【讨论】:

【参考方案6】:

在命令行上使用NETSTAT:

netstat util

【讨论】:

这只会显示帮助文本(带有所有不同的选项/开关)。应该使用哪个选项?应该是-a - "-a 显示所有连接和监听端口。"? -a -n -o?

以上是关于如何在 Windows 中找到哪个程序正在使用端口 80? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

ping 是哪个端口

Windows查看端口被哪个进程占用

如何使用“C”在 Windows 中找到空闲的 TCP 端口

Windows中正在使用的端口如何关闭

如何在我的 cloudera 集群中找到哪个 KUDU DB 的 KUDU 主名称或端口?

如何查看IIS的80端口被占用?