在Windows中,如何使用命令行检查远程端口是否打开?


Answers:


62

前几天,我从Microsoft找到了一个用于测试端口的隐藏宝石:

Portqry.exe

“ Portqry.exe是一个命令行实用程序,可用于帮助解决TCP / IP连接问题。Portqry.exe在基于Windows 2000的计算机,基于Windows XP的计算机和基于Windows Server 2003的计算机上运行。该实用程序报告您选择的计算机上TCP和UDP端口的端口状态。


注意:尝试从Microsoft下载此文件,返回了一个页面,指出该下载“不再可用”。
dgw

@dgw谢谢您。..如果您搜索“ portray”,则google会显示一个新版本,我明天将检查该版本
Peter M


52

哪个版本的Windows?对于Windows 8 / Server 2012和更高版本,以下功能在PowerShell中起作用:

Test-NetConnection 128.159.1.1 -Port 80

某些Google搜寻还会出现一些选择,这些选择直接为运行较低版本Windows的系统(不提供PowerShell)直接使用.NET Framework(因为PowerShell允许您这样做)Test-NetConnection

如果您不反对使用第三方实用程序,那么Nmap也是一个很好的朋友,它可以从命令行运行。


1
.Net方法:$connection = (New-Object Net.Sockets.TcpClient).Connect($target,$port); If ($connection.Connected) { $connection.Close() }
xXhRQ8sD2L7Z 2014年

在Win7上不起作用:-(
samsmith

@samsmith您是在谈论我的答案中的命令还是一个ST8Z ...的评论?我的答案中的一个适用于Win8 / 2k12及更高版本,答案也是如此。
Iszi 2015年

1
似乎是Windows 8.1中-似乎无法找到它在Windows 8
安迪Krouwel

1
在Windows 10上运行良好,不需要安装任何程序或添加任何功能。谢谢!:)
史蒂夫·鲍曼

24

使用telnet命令连接到指定端口上的服务器,并查看是否可以建立连接。

成功:

$ telnet my_server 25
220 my_server ESMTP Postfix

失败:

$ telnet my_server 23632
Connecting To my_server...Could not open connection to the host, on port 23632:
Connect failed

14
不适用于UDP。
阿德里亚诺瓦里

8
UDP无连接..
Amalgovinus 2014年

7

Telnet将适用于TCP。

Netcat是处理UDP等这类问题的更好工具,但请注意,某些视音频软件将其视为“邪恶的黑客工具”


1

以下命令将列出计算机上正在使用的所有端口...

netstat -a

输出包含协议,本地地址,外部地址和当前状态

microsoft.com上的Netstat文档


8
问题询问有关远程计算机而不是本地计算机上的开放端口的问题。
克里斯S

0

使用netcat Windows端口

>nc -zvv www.google.com 80
www.google.com [108.177.96.103] 80 (http) open
sent 0, rcvd 0
>

>nc -zvv www.google.com 888
www.google.com [108.177.96.147] 888 (?): TIMEDOUT
sent 0, rcvd 0: NOTSOCK
>

-4

“ netstat”是您的朋友。


3
本地计算机是,远程计算机是。

3
该答案发布在指定它与远程计算机上的端口有关的编辑之前。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.