ネットワークへの接続状態を取得する

メモ:  Category:vb

コンピュータがネットワークに接続されているかどうかを知るには、次の方法で取得します。

VB2005からのMyを使った取得

ネットワークが利用可能かどうか調べるには、VB2005から追加されたMy.Computer.Network.IsAvailableプロパティを使用します。ネットワークに接続している場合、trueを返し接続していない場合、falseを返します。

If My.Computer.Network.IsAvailable Then
    MessageBox.Show("ネットワークに接続されていません。")
End If

ただし、この場合複数のネットワークインターフェイスがある場合、どちらか一方が接続可能であれば接続可能であるtrueを返すようです。

NetworkInterfaceを使った取得

ネットワークが利用可能かどうか調べるには、NetworkInterfaceクラスのGetIsNetworkAvailableプロパティを使用します。ネットワークに接続している場合、trueを返し接続していない場合、falseを返します。

' System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable

If Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable Then
    MessageBox.Show("ネットワークに接続されていません。")
End If

ただし、この場合複数のネットワークインターフェイスがある場合、どちらか一方が接続可能であれば接続可能であるtrueを返すようです。

複数インターフェイスの場合

複数のネットワークインターフェイスがある場合、次のように取得します。

IsAvailableでは、「ネットワーク インターフェイスが "up" とマークされていて、ループバックインターフェイスまたはトンネルインターフェイスではない場合、ネットワーク接続は使用可能と見なされす。」と記述されているため同じようにインターフェイスごとに確認します。

Dim adapters As NetworkInterface() = NetworkInterface.GetAllNetworkInterfaces()
Dim adapter As NetworkInterface
For Each adapter In adapters
    If adapter.OperationalStatus = OperationalStatus.Up Then
        If adapter.NetworkInterfaceType <> NetworkInterfaceType.Loopback _
             Or adapter.NetworkInterfaceType <> NetworkInterfaceType.Tunnel Then
            ' 接続している
        End If
Else
    ' 接続していない
    End If
Next

bluenote by BBB