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 ) – 勉強ダイエット