注意:ここで紹介している方法は、.NET Framework 2.0から追加されたNetworkInterfaceクラスを使用していますので、.NET Framework 2.0以降でのみ使用できます。
.NET Framework 2.0から追加されたNetworkInterfaceクラスを使用することにより、ネットワークインターフェイス(ネットワークカード、ネットワークアダプタ)の情報を取得することができます。NetworkInterface.GetAllNetworkInterfacesメソッドにより、コンピュータで使用可能なネットワークインターフェイスをNetworkInterfaceオブジェクトの配列で取得できますので、これを利用して、特定のネットワークインターフェイスを探して、情報を取得することができます。
また、NetworkInterfaceクラスのGetIPv4Statisticsメソッドにより、IPv4の統計情報を取得することができます。
以下に例を示します。ここでは、ネットワークと接続しているネットワークインターフェイスの情報のみを表示しています。なおここでは取得できる情報のすべては紹介していませんので、詳しくはヘルプ(NetworkInterfaceクラス、IPInterfacePropertiesクラス、IPv4InterfaceStatisticsクラス)をご覧ください。
'Imports System.Net.NetworkInformation 'がソースファイルの一番上に書かれているものとする 'すべてのネットワークインターフェイスを取得する Dim nis As NetworkInterface() = NetworkInterface.GetAllNetworkInterfaces() Dim ni As NetworkInterface For Each ni In nis 'ネットワーク接続しているか調べる If ni.OperationalStatus = OperationalStatus.Up AndAlso _ ni.NetworkInterfaceType <> NetworkInterfaceType.Loopback AndAlso _ ni.NetworkInterfaceType <> NetworkInterfaceType.Tunnel Then 'ネットワークインターフェイスの情報を表示する Console.WriteLine("接続名:{0}", ni.Name) Console.WriteLine("説明:{0}", ni.Description) Console.WriteLine("種類:{0}", ni.NetworkInterfaceType) Console.WriteLine("速度:{0}", ni.Speed) Console.WriteLine("MAC(物理)アドレス:{0}", ni.GetPhysicalAddress()) '構成情報、アドレス情報を取得する Dim ipips As IPInterfaceProperties = ni.GetIPProperties() If Not (ipips Is Nothing) Then For Each ip As UnicastIPAddressInformation In ipips.UnicastAddresses Console.WriteLine("ユニキャストアドレス:{0}", ip.Address) Console.WriteLine("IPv4マスク:{0}", ip.IPv4Mask) Next ip For Each ip As System.Net.IPAddress In ipips.DnsAddresses Console.WriteLine("DNS:{0}", ip.ToString()) Next ip For Each ip As System.Net.IPAddress In ipips.DhcpServerAddresses Console.WriteLine("DHCP:{0}", ip.ToString()) Next ip For Each ip As GatewayIPAddressInformation In ipips.GatewayAddresses Console.WriteLine("Gateway:{0}", ip.Address) Next ip For Each ip As System.Net.IPAddress In ipips.WinsServersAddresses Console.WriteLine("WINS:{0}", ip.ToString()) Next ip End If 'IPv4の統計情報を表示する If ni.Supports(NetworkInterfaceComponent.IPv4) Then Dim ipv4 As IPv4InterfaceStatistics = ni.GetIPv4Statistics() Console.WriteLine("受信バイト数:{0}", ipv4.BytesReceived) Console.WriteLine("送信バイト数:{0}", ipv4.BytesSent) Console.WriteLine("受信したユニキャストパケット数:{0}", _ ipv4.UnicastPacketsReceived) Console.WriteLine("送信したユニキャストパケット数:{0}", _ ipv4.UnicastPacketsSent) End If End If Next ni
//using System.Net.NetworkInformation; //がソースファイルの一番上に書かれているものとする //すべてのネットワークインターフェイスを取得する NetworkInterface[] nis = NetworkInterface.GetAllNetworkInterfaces(); foreach (NetworkInterface ni in nis) { //ネットワーク接続しているか調べる if (ni.OperationalStatus == OperationalStatus.Up && ni.NetworkInterfaceType != NetworkInterfaceType.Loopback && ni.NetworkInterfaceType != NetworkInterfaceType.Tunnel) { //ネットワークインターフェイスの情報を表示する Console.WriteLine("接続名:{0}", ni.Name); Console.WriteLine("説明:{0}", ni.Description); Console.WriteLine("種類:{0}", ni.NetworkInterfaceType); Console.WriteLine("速度:{0}", ni.Speed); Console.WriteLine("MAC(物理)アドレス:{0}", ni.GetPhysicalAddress()); //構成情報、アドレス情報を取得する IPInterfaceProperties ipips = ni.GetIPProperties(); if (ipips != null) { foreach (UnicastIPAddressInformation ip in ipips.UnicastAddresses) { Console.WriteLine("ユニキャストアドレス:{0}", ip.Address); Console.WriteLine("IPv4マスク:{0}", ip.IPv4Mask); } foreach (System.Net.IPAddress ip in ipips.DnsAddresses) Console.WriteLine("DNS:{0}", ip.ToString()); foreach (System.Net.IPAddress ip in ipips.DhcpServerAddresses) Console.WriteLine("DHCP:{0}", ip.ToString()); foreach (GatewayIPAddressInformation ip in ipips.GatewayAddresses) Console.WriteLine("Gateway:{0}", ip.Address); foreach (System.Net.IPAddress ip in ipips.WinsServersAddresses) Console.WriteLine("WINS:{0}", ip.ToString()); } //IPv4の統計情報を表示する if (ni.Supports(NetworkInterfaceComponent.IPv4)) { IPv4InterfaceStatistics ipv4 = ni.GetIPv4Statistics(); Console.WriteLine("受信バイト数:{0}", ipv4.BytesReceived); Console.WriteLine("送信バイト数:{0}", ipv4.BytesSent); Console.WriteLine("受信したユニキャストパケット数:{0}", ipv4.UnicastPacketsReceived); Console.WriteLine("送信したユニキャストパケット数:{0}", ipv4.UnicastPacketsSent); } } }