问答中心分类: WINDOWS如何找出哪个进程正在侦听 Windows 上的 TCP 或 UDP 端口?
0
Perl Fanatic 提问 1月 前

关闭。这个问题不符合堆栈溢出指南.它目前不接受答案。

这个问题似乎不是关于主要由程序员使用的特定编程问题、软件算法或软件工具.如果你认为这个问题会成为话题另一个 Stack Exchange 站点,您可以发表评论以说明问题可以在哪里得到解答。

关闭7个月前.

社区审核是否重开这个问题7个月前并将其关闭:

原始关闭原因未解决

改进这个问题

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

Blue Clouds 回复 1月 前

Currports 也是一个帮助搜索+过滤的工具nirsoft.net/utils/cports.html

Blue Clouds 回复 1月 前

我在尝试在 IntelliJ 下以调试模式运行 Tomcat 时遇到了这个问题,对我来说最好的解决方案是将调试传输配置(文件->设置->构建/exe/部署->调试器)从“套接字”更改为“共享内存”。

Blue Clouds 回复 1月 前

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

Blue Clouds 回复 1月 前

@DavidJesus 没有在 Windows 10 上显示进程。

Blue Clouds 回复 1月 前

@SmitJohnth 我用netstat -aof | findstr :3306在 Windows 10 上找到 MySQL 进程并像魅力一样工作。

Blue Clouds 回复 1月 前

@DavidJesus,对我来说它不起作用。 Windows 10 也是如此。

Blue Clouds 回复 1月 前

可能是因为您的进程可能正在尝试绑定到保留端口。请参阅此答案以查找被阻止端口的列表:stackoverflow.com/a/64988942/8919607

Blue Clouds 回复 1月 前

是的,netstat 在 Windows 7/10 上不显示进程。

Blue Clouds 回复 1月 前

您还可以使用:netstat -aof | grep :4200

Blue Clouds 回复 1月 前

OT:有趣的是,关于 Windows 的第一个问题被标记为离题……

29 Answers
0
bcorso 回答 1月 前

Windows 有一个原生 GUI:

  • 开始菜单 →所有程序配件系统工具资源监视器
  • 或运行resmon.exe,
  • 或从任务管理器Performance标签。

在此处输入图像描述

Raphael 回复 1月 前

还显示绑定的防火墙状态(最后一列)。非常实用。

KrishPrabakar 回复 1月 前

您需要成为管理员(或该组中的管理员)才能运行它。

Pacerier 回复 1月 前

@bcorso,什么绑定到“未指定地址“ 意思是?

Mathieu K. 回复 1月 前

也可以从任务管理器的性能选项卡启动,至少在 Windows 10 中。(未检查其他版本。)

RBT 回复 1月 前

您还可以通过单击任务管理器的性能选项卡启动资源监视器Open Resource Monitor按钮。从运行提示perfmon /res命令还可以打开资源监视器。

Jpsy 回复 1月 前

上面@user4836454 的评论不正确:资源监视器确实显示带有侦听器的端口,即使这些端口没有网络连接。只需查看“侦听端口”部分而不是“TCP 连接”部分。

Panzercrisis 回复 1月 前

这似乎忽略了一些有时被使用的 TCP 端口,即使它们被使用到需要它们的其他应用程序无法启动的程度。

Talha Imam 回复 1月 前

由于某种原因,我正在寻找的 pid 未在资源监视器中列出。最终不得不运行 netstat 命令。

Cliff 回复 1月 前

@Pacerier 单个以太网接口可以分配有多个 IP 地址(通常在服务器中)。 “未指定”表示它正在侦听服务器使用的任何地址的端口。相反的是显示程序将响应的 IP 地址。

MSIS 回复 1月 前

@Raphael:你不是说“非常有用”吗? 😉

0
aku 回答 1月 前

对于 Windows:

netstat -aon | find /i "listening"
Levite 回复 1月 前

+1但请记住,如果您的窗口以英语以外的语言运行,您将不得不将“聆听”更改为本地术语。例如netstat -aon | find /i "abhören"德语。

The Godfather 回复 1月 前

在我的情况下,它不起作用可能是因为引号符号,但解决方案 netstat -aon | findstr 聆听完美!

Vlad Schnakovszki 回复 1月 前

这可以在不需要提升特权的情况下工作,因此被赞成。

Nicke Manarin 回复 1月 前

尝试使用 PowerShell 在 W10 15063.729 上运行此命令时出现错误:FIND: Parameter format not correct

Pawel Cioch 回复 1月 前

这个答案与“找出哪个进程 [name] 正在侦听 Windows 上的端口”有什么关系?

joe 回复 1月 前

如果在 Windows 上使用 git bash,请使用 //i 而不是 /i

golimar 回复 1月 前

@PawelCioch OP 要求提供进程,而不是进程名称

0
Dane 回答 1月 前

利用TCP视图如果你想要一个图形用户界面。这是旧的系统内部微软收购的应用程序。

Andreas Lundgren 回复 1月 前

在我看来,这是最好的选择,特别是因为所有进程都在同一个列表中,您可以通过右键单击它们直接关闭进程。

Janac Meena 回复 1月 前

此外,这不需要管理员权限!

GTodorov 回复 1月 前

我喜欢 TCPView。自 Windows XP 以来,它一直是我的首选!

Jason Huang 回复 1月 前

很棒的工具。感谢分享

0
Ram Sharma 回答 1月 前

大多数答案中提到的 -b 开关要求您在机器上具有管理权限。您真的不需要提升权限来获取进程名称!
查找端口号(如8080)中运行的进程的pid

netstat -ano | findStr "8080"

通过pid查找进程名

tasklist /fi "pid eq 2216"

通过 TCP/IP 端口查找进程

0
Nathan24 回答 1月 前

如果您运行以下命令,您可以获得更多信息:

netstat -aon | find /i "listening" |find "port"

使用“查找”命令可以过滤结果。find /i "listening"将仅显示“正在侦听”的端口。请注意,您需要/i忽略大小写,否则您将键入 find "LISTENING"。| find "port"会将结果限制为仅包含特定端口号的结果。请注意,在此它还将过滤在响应字符串中任何位置具有端口号的结果。

self. 回复 1月 前

FWIW 尝试在 PowerShell v2.0 中运行它会产生错误FIND: Parameter format not correct.您需要在查找条件之后添加一个空格。这会给你留下netstat -aon | find /i "listening" | find "1234 ".

jb007 回复 1月 前

将上面的“端口”替换为您的端口,例如“5000”

Nicke Manarin 回复 1月 前

@自己。即使在管道后添加空格,我仍然会在 PS 5.1 中遇到该错误。你知道发生了什么吗?

Tristan van Dam 回复 1月 前

@NickeManarinin & @self 要么首先从 powershell 更改为 cmd(只需键入 cmd 并按 enter 然后重做命令)或在 powershell 中使用此命令:netstat -aon |find /i "{back tick}“听{back tick}"" |找到 "{back tick}“港口{back tick}“”(反勾号,因为我无法添加实际字符,因为它认为它是剪断)