ドメイン(ホスト名)から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);
}
GetHostAddress
と GetHostEntry
どちらでもホスト名からIPアドレスを取得できました。
以上。
コメントを書く