如何在 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? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用“C”在 Windows 中找到空闲的 TCP 端口