ネットワークへの接続状態を取得する
コンピュータがネットワークに接続されているかどうかを知るには、次の方法で取得します。
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