IP アドレスやゲートウェイアドレス、および MAC アドレスなどのネットワーク情報を取得するサンプルコードになります。詳細はコメントを参照ください。
スポンサーリンク
ネットワーク情報の取得
VB.NET
'Imports System.Net.NetworkInformation
' アダプタリストを取得する
Dim adapters As NetworkInterface() = NetworkInterface.GetAllNetworkInterfaces()
For Each adapter As NetworkInterface In adapters
' ネットワーク接続状態が UP のアダプタのみ表示
If (adapter.OperationalStatus = OperationalStatus.Up) Then
Console.WriteLine(adapter.Name) ' アダプタ名
Console.WriteLine(adapter.Description) ' アダプタの説明
Dim ip_prop As IPInterfaceProperties = adapter.GetIPProperties()
' ユニキャスト IP アドレスの取得
Dim addrs As UnicastIPAddressInformationCollection = ip_prop.UnicastAddresses()
For Each addr As UnicastIPAddressInformation In addrs
Console.WriteLine(addr.Address.ToString())
' メモ
'-----------------------------------------------------------------------------
' IPv4 : addr.Address.AddressFamily = Net.Sockets.AddressFamily.InterNetwork
' IPv6 : addr.Address.AddressFamily = Net.Sockets.AddressFamily.InterNetwork6
Next
' ゲートウェイ IP アドレスの取得
Dim gates As GatewayIPAddressInformationCollection = ip_prop.GatewayAddresses
For Each gate As GatewayIPAddressInformation In gates
Console.WriteLine(gate.Address.ToString())
Next
' 物理(MAC)アドレスの取得
Dim phy As PhysicalAddress = adapter.GetPhysicalAddress()
Console.WriteLine(phy.ToString())
End If
Next
C#
//using System.Net.NetworkInformation;
// アダプタリストを取得する
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
foreach(NetworkInterface adapter in adapters) {
// ネットワーク接続状態が UP のアダプタのみ表示
if (adapter.OperationalStatus == OperationalStatus.Up) {
Console.WriteLine(adapter.Name); // アダプタ名
Console.WriteLine(adapter.Description); // アダプタの説明
IPInterfaceProperties ip_prop = adapter.GetIPProperties();
// ユニキャスト IP アドレスの取得
UnicastIPAddressInformationCollection addrs = ip_prop.UnicastAddresses;
foreach(UnicastIPAddressInformation addr in addrs) {
Console.WriteLine(addr.Address.ToString());
// メモ
//-----------------------------------------------------------------------------
// IPv4 : addr.Address.AddressFamily = Net.Sockets.AddressFamily.InterNetwork
// IPv6 : addr.Address.AddressFamily = Net.Sockets.AddressFamily.InterNetwork6
}
// ゲートウェイ IP アドレスの取得
GatewayIPAddressInformationCollection gates = ip_prop.GatewayAddresses;
foreach(GatewayIPAddressInformation gate in gates) {
Console.WriteLine(gate.Address.ToString());
}
// 物理(MAC)アドレスの取得
PhysicalAddress phy = adapter.GetPhysicalAddress();
Console.WriteLine(phy.ToString());
}
}
ポイント
- IPv6 にも対応している
- IP アドレスや ゲートウェイアドレスは複数設定することが可能
Pingback: [ VB.NET / C# ] WMI からネットワーク情報を取得 ( Win32_NetworkAdapterConfiguration ) – 勉強ダイエット