もういろんなところで紹介されている内容ですが、.NETのDnsクラスの使い方を備忘のために残しておきます。
IPアドレスからホスト名を得る
using System;
using System.Net;
IPHostEntry host = Dns.GetHostEntry("127.0.0.1");
Console.WriteLine(host.HostName);
ホスト名からIP(v4)アドレスを得る
AddressFamily が AddressFamily.InterNetwork のものを抜き出せば、IPV4アドレスを取得出来ます。
using System;
using System.Net;
using System.Net.Sockets;
var hostName = "example.com";
IPHostEntry ip = Dns.GetHostEntry(hostName);
foreach (IPAddress address in ip.AddressList)
{
if (address.AddressFamily == AddressFamily.InterNetwork)
Console.WriteLine(address);
}
ホスト名からIP(v6)アドレスを得る
AddressFamily が AddressFamily.InterNetworkV6 のものを抜き出せば、IPV6アドレスを取得出来ます。
using System;
using System.Net;
using System.Net.Sockets;
var hostName = "example.com";
IPHostEntry ip = Dns.GetHostEntry(hostName);
foreach (IPAddress address in ip.AddressList)
{
if (address.AddressFamily == AddressFamily.InterNetworkV6)
Console.WriteLine(address);
}
自分自身のIPアドレスを得る
GetHostEntryメソッドに空文字列を渡すことで自分自身のコンピューターのIPアドレスを取得出来ます。
using System;
using System.Net;
var hostName = ""; // 空文字にする
IPHostEntry ip = Dns.GetHostEntry(hostName);
foreach (IPAddress address in ip.AddressList)
{
Console.WriteLine(address);
}
ローカル コンピューターのホスト名を得る
ローカル コンピューターのホスト名を取得するには、Dns.GetHostNameメソッドを呼び出すだけです。
using System;
using System.Net;
var hostName = Dns.GetHostName();
Console.WriteLine(hostName);