检查端口是否被Windows防火墙阻止

时间:2011-08-15 07:42:28

标签: vb.net windows-firewall

如何在传入和传出连接中检查特定端口是否被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

但我怎么知道是否因为防火墙阻塞而特别抛出异常,而不是因为其他套接字错误?

1 个答案:

答案 0 :(得分:2)

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

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