2011-08-15 160 views
2

如何檢查特定端口是否被Windows防火牆阻止,無論是在傳入連接還是傳出連接中。檢查端口是否被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 

但我怎麼能知道,如果拋出異常特別是因爲防火牆攔截的,而不是因爲其他套接字錯誤的?

回答

2

我想說,檢查Windows防火牆是否阻塞端口的正確方法不是測試它,而是使用Windows Firewall API來確認。
我從來沒有用過它,但我認爲INetFwOpenPorts將是開始的地方。

這是一個VB.Net code sample似乎包含這樣做的代碼。具體而言,我會建議查看該示例中的IsxPLportOpen方法,該方法使用GloballyOpenPorts方法獲得對INetFwOpenPorts的引用。

+0

謝謝,VB示例很棒! – MichaelS