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コード サンプルを次に示します。具体的には、 GloballyOpenPortsメソッドを使用して への参照を取得するIsxPLportOpenサンプルのメソッドを確認することをお勧めします。INetFwOpenPorts

于 2011-08-15T09:48:20.133 に答える