2

如何检查特定端口是否被 Windows 防火墙阻止,包括传入和传出连接。

我见过这样的代码示例:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)

Dim host As String = "localhost"

Dim port As Integer = 6900

Dim addr As IPAddress = CType(Dns.GetHostAddresses(host)(0), IPAddress)

Try

Dim tcpList As New TcpListener(addr, port)

tcpList.Start()

Catch sx As SocketException

' Catch exception here if port is blocked

End Try

End Sub

但是我怎么知道异常是不是因为防火墙阻塞而引发的,而不是因为其他套接字错误?

4

1 回答 1

2

我想说检查 Windows 防火墙是否阻止端口的正确方法不是测试它,而是使用Windows 防火墙 API进行最终检查。
我从未使用过它,但我认为INetFwOpenPorts将是开始的地方。

这是一个似乎包含执行此操作的代码的 VB.Net代码示例。具体来说,我建议查看IsxPLportOpen该示例中的方法,该方法使用GloballyOpenPorts方法来获取对INetFwOpenPorts.

于 2011-08-15T09:48:20.133 回答