[ VB.NET / C# ] IP アドレス および MAC アドレスの取得 (IPv6 対応)

Pocket

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());
        }
    }

ポイント

  1. IPv6 にも対応している
  2. IP アドレスや ゲートウェイアドレスは複数設定することが可能
参考
スポンサーリンク

Pocket

One thought on “[ VB.NET / C# ] IP アドレス および MAC アドレスの取得 (IPv6 対応)”

  1. Pingback: [ VB.NET / C# ] WMI からネットワーク情報を取得 ( Win32_NetworkAdapterConfiguration ) – 勉強ダイエット

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>