在Windows平台上,我必须检查本地计算机上的端口(例如3306)(如localhost
)上的本地选项是否被阻止?
既然你是在Windows机器上,这些东西都可以做到,
执行以下命令并查找“:3306”侦听器(您没有提到UDP / TCP)。 这将确认端口上正在运行。
netstat -a -n
在此之后,如果您希望在此端口上传入连接,并且觉得防火墙可能会阻止它们,则可以启动Windows防火墙日志logging并检查日志中是否存在连接断开
还有一个命令来检查防火墙的状态
(针对Windows 7用户的更新 – 如下面的Nick
所述 – 使用netsh advfirewall防火墙 )
netsh防火墙显示状态
该命令将转储Windows防火墙configuration细节
netsh防火墙显示configuration
如果启动日志logging后有一个活动块(传入的连接正在被防火墙丢弃),则应该在日志中看到该块。
如果您运行的应用程序/服务正在侦听3306,则防火墙configuration应显示为已启用。 如果没有看到,你可能会错过在防火墙上添加一个例外来允许这个应用程序/服务。
最后,端口3306通常用于MySQL。 所以,我认为你正在这台Windows机器上运行MySQL服务器。 因此,您应该看到3306接受传入连接的监听器。 如果你没有看到,你需要使用你的应用程序(MySQL)来启动它。
NETSTAT
会告诉你端口是否在监听,但是不会告诉你端口是否对外开放 。 我的意思是, NETSTAT
可能会显示端口3306上的0.0.0.0是LISTENING,但是防火墙可能仍然阻止该端口阻止外部连接; 所以仅仅依靠NETSTAT
是不够的。
检查端口是否被阻塞的最好方法是从客户端机器进行端口扫描。
有很多方法来做一个端口扫描,但是因为你提到在Windows上,我会build议Microsoft命令行实用程序PortQry
和graphics版本PortQryUI
使用PortScan实用程序,您将获得3个结果中的一个。
Listening
意味着服务器正在侦听指定的端口 Filtered
意味着它收到一个TCP确认数据包,并设置了重置标志,这可能表示防火墙或软件问题 Not Listening
是指根本没有收到答复 telnet
是默认情况下通常安装在操作系统上的另一个命令行选项。 这个命令行实用程序可以用来快速查看端口是否响应networking请求。
要使用telnet
,只需从命令提示符发出以下命令:
telnet localhost 3306
上面的命令应该能让你快速的知道localhost
上的端口3306
是否响应。
如果您可以从本地机器(使用外部IP地址)远程login到端口,而不是从另一台机器login – 则会在两者之间被阻塞。
请注意,本地计算机上的防火墙可能会阻止第一个操作。