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

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

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