端くれプログラマの備忘録 C# [C#] 有効なネットワークアダプタのIPアドレス取得

[C#] 有効なネットワークアダプタのIPアドレス取得

using System;
using System.Collections.Generic;

using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;

List<IPAddress> GetIPAddresses()
{
    var ipAddresses = new List<IPAddress>();
    var interfaces = NetworkInterface.GetAllNetworkInterfaces();

    foreach (var adapter in interfaces)
    {
        if (adapter.OperationalStatus == OperationalStatus.Up)
        {
            var properties = adapter.GetIPProperties();

            foreach (var unicast in properties.UnicastAddresses)
            {
                switch (unicast.Address.AddressFamily)
                {
                    case AddressFamily.InterNetwork:
                    case AddressFamily.InterNetworkV6:
                        ipAddresses.Add(unicast.Address);
                        break;
                }
            }
        }
    }
    return ipAddresses;
}