2011-08-15 11 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には、これを行うコードが含まれているようです。具体的には、INetFwOpenPortsへの参照を取得するためにGloballyOpenPortsメソッドを使用するサンプルのIsxPLportOpenメソッドを調べることをお勧めします。

+0

ありがとう、VBサンプルは素晴らしかったです! – MichaelS