ローカルIPアドレスを取得する 質問する

ローカルIPアドレスを取得する 質問する

インターネットには、IP アドレスを取得する方法を示す場所がいくつかあります。その多くは、次の例のようになります。

String strHostName = string.Empty;
// Getting Ip address of local machine...
// First get the host name of local machine.
strHostName = Dns.GetHostName();
Console.WriteLine("Local Machine's Host Name: " + strHostName);
// Then using host name, get the IP address list..
IPHostEntry ipEntry = Dns.GetHostEntry(strHostName);
IPAddress[] addr = ipEntry.AddressList;

for (int i = 0; i < addr.Length; i++)
{
    Console.WriteLine("IP Address {0}: {1} ", i, addr[i].ToString());
}
Console.ReadLine();

この例では、複数の IP アドレスを取得しますが、私が関心があるのは、プログラムを実行しているコンピューターにルーターが割り当てる IP アドレス、つまり、たとえば、誰かが私のコンピューターの共有フォルダーにアクセスしたい場合に与える IP アドレスだけです。

ネットワークに接続しておらず、ルーターを使わずにモデム経由で直接インターネットに接続している場合は、エラーが表示されるようにしたいです。 C# を使用してコンピューターがネットワークに接続されているかどうかを確認し、接続している場合は LAN IP アドレスを取得するにはどうすればよいでしょうか。

ベストアンサー1

ローカル IP アドレスを取得するには:

public static string GetLocalIPAddress()
{
    var host = Dns.GetHostEntry(Dns.GetHostName());
    foreach (var ip in host.AddressList)
    {
        if (ip.AddressFamily == AddressFamily.InterNetwork)
        {
            return ip.ToString();
        }
    }
    throw new Exception("No network adapters with an IPv4 address in the system!");
}

接続されているかどうかを確認するには:

System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();

おすすめ記事