1. ホーム
  2. c#

[解決済み] ローカルIPアドレスの取得

2022-03-16 20:39:28

質問

インターネット上には、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アドレスを取得するにはどうしたらよいでしょうか。

どのように解決するのですか?

ローカル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();