[C#] ドメイン(ホスト名)からIPアドレスを取得する方法(逆引き)

[C#] ドメイン(ホスト名)からIPアドレスを取得する方法(逆引き)

ドメイン(ホスト名)からIPアドレスを取得する方法

Dns クラスの GetHostAddress メソッドを利用することで、ホスト名からIPアドレスを取得できます。ドメインの名前解決も可能です。

// 自身のホスト名を取得
var host = Dns.GetHostName();
Console.WriteLine(host);

// ホスト名からIPアドレスを取得
var ips = Dns.GetHostAddresses(host);

// IPアドレスを列挙
foreach (var ip in ips)
{
    Console.WriteLine(ip);
}

Dns.GetHostName メソッドでマシンに割り当てられたホスト名を取得しています。取得したホスト名のIPアドレスを取得して列挙しています。

ホスト名に対してIPアドレスが複数あるのは、複数のIPが割り当てられていたり、IPv6アドレスも取得できるためです。

ホスト名の部分にドメインを指定するとIPアドレスに変換してくれます。

GetHostEntryAsync メソッドを使えば非同期で処理できます。

IPアドレスからホスト名を逆引きする方法

Dns.GetHostEntry(非同期の場合は、GetHostEntryAsync)メソッドでIPアドレスからホスト名を逆引きできます。

var r = Dns.GetHostEntry("127.0.0.1");
Console.WriteLine(r.HostName);

ちなみに GetHostEntry メソッドでは、ホスト名からIPアドレスを取得することも可能です。つまり GetHostAddress メソッドは「ホスト名 -> IP」だけですが、GetHostEntry メソッドでは、「ホスト名 <-> IP」両変換が可能です。

var r = Dns.GetHostEntry("127.0.0.1");
foreach (var x in r.AddressList)
{
    Console.WriteLine(x);
}

GetHostAddressGetHostEntry どちらでもホスト名からIPアドレスを取得できました。

以上。

C#カテゴリの最新記事