如何确定哪个进程正在侦听Windows上的TCP或UDP端口?
当前回答
在编程上,您需要iphlpapi.h中的东西,例如GetTcpTable2()。像MIB_TCP6ROW2这样的结构包含所有者PID。
其他回答
首先,我们找到需要消除的特定任务的进程id,以便获得自由端口:
类型
netstat -n -a -o
在Windows命令行提示符(cmd)中执行此命令后,选择我认为是最后一列的pid。假设这是3312。
现在键入
taskkill /F /PID 3312
现在可以通过键入netstat命令进行交叉检查。
注意:有时Windows不允许您直接在CMD上运行此命令,因此首先需要执行以下步骤:
从开始菜单->命令提示符(右键单击命令提示符,然后以管理员身份运行)
要获取与每个连接关联的所有所属进程ID的列表,请执行以下操作:
netstat -ao |find /i "listening"
如果要终止任何进程,请具有ID并使用此命令,以便端口变为空闲
Taskkill /F /IM PID of a process
正在使用PowerShell。。。…这将是您的朋友(用端口号替换8080):
netstat -abno | Select-String -Context 0,1 -Pattern 8080
样本输出
> TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 2920
[tnslsnr.exe]
> TCP [::]:8080 [::]:0 LISTENING 2920
[tnslsnr.exe]
因此,在此示例中,tnslsnr.exe(OracleXE数据库)正在侦听端口8080。
快速解释
选择字符串用于过滤相关行的netstat的冗长输出。-模式根据正则表达式测试每行。-上下文0,1将为每个模式匹配输出0个前导行和1个尾随行。
如果运行以下命令,可以获得更多信息:
netstat -aon | find /i "listening" |find "port"
使用“查找”命令可以过滤结果。find/i“侦听”将仅显示“侦听”的端口。注意,您需要/i忽略大小写,否则您将键入find“LISTENING”。|查找“端口”将结果限制为仅包含特定端口号的端口。注意,在这一点上,它还将过滤响应字符串中任何位置具有端口号的结果。
使用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
推荐文章
- 在Sublime Text 2中使用Ctrl+D进行多个选择时,我如何跳过匹配?
- #定义WIN32_LEAN_AND_MEAN具体排除了什么?
- 如何通过windows命令行关闭TCP和UDP端口
- 最好的轻量级web服务器(只有静态内容)的Windows
- UDP和TCP比起来快多少?
- npm犯错!错误:EPERM:操作不允许,重命名
- 崇高的文本从命令行
- 如何保持Python脚本输出窗口打开?
- ssh -L转发多个端口
- 使用.bat文件检查文件夹是否存在
- 如何查看Windows库(*.lib)的内容
- 在Windows中删除大文件夹最快的方法是什么?
- 一个干净、轻量级的Python扭曲的替代品?
- NPM卡住给出相同的错误EISDIR:对目录的非法操作,读取错误(本机)
- Windows 10环境变量太大