DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

DOBON.NET

ホスト名からIPアドレス、IPアドレスからホスト名を取得する

ホスト名からIPアドレスを取得する方法(例えば「www.yahoo.com」から「66.218.71.81」)、およびIPアドレスからホスト名を取得する方法(例えば「66.218.71.81」から「w1.scd.yahoo.com」)を紹介します。

ホスト名からIPアドレスを取得する

ホスト名からIPアドレスを取得するには、Dns.Resolveメソッド(.NET Framework 2.0以降は、Dns.GetHostEntryメソッド)でIPHostEntryオブジェクトを作成して、AddressListプロパティを参照します。

[VB.NET]
'ホスト名からIPアドレスを取得
Dim server As String = "www.yahoo.com"

'IPHostEntryのインスタンスを作成
'.NET Framework 2.0以降は次のようにする
Dim iphe As System.Net.IPHostEntry = System.Net.Dns.GetHostEntry(server)
'.NET Framework 1.1以前は次のようにする
'Dim iphe As System.Net.IPHostEntry = System.Net.Dns.Resolve(server)
'または
'Dim iphe As System.Net.IPHostEntry = System.Net.Dns.GetHostByName(server)

'IPアドレスのリストを取得し、はじめのIPアドレスを取得
Dim hostadd As System.Net.IPAddress = iphe.AddressList(0)
'文字列に変換
Console.WriteLine(hostadd.ToString())
'この結果は例えば「66.218.71.81」
[C#]
//ホスト名からIPアドレスを取得
string server = "www.yahoo.com";

//IPHostEntryのインスタンスを作成
//.NET Framework 2.0以降は次のようにする
System.Net.IPHostEntry iphe = System.Net.Dns.GetHostEntry(server);
//.NET Framework 1.1以前は次のようにする
//System.Net.IPHostEntry iphe = System.Net.Dns.Resolve(server);
//または
//System.Net.IPHostEntry iphe = System.Net.Dns.GetHostByName(server);

//IPアドレスのリストを取得し、はじめのIPアドレスを取得
System.Net.IPAddress hostadd = iphe.AddressList[0];
//文字列に変換
Console.WriteLine(hostadd.ToString());
//この結果は例えば「66.218.71.81」

IPアドレスからホスト名を取得する

IPアドレスからホスト名を取得する場合も同様に、Dns.Resolveメソッド(.NET Framework 2.0以降は、Dns.GetHostEntryメソッド)でIPHostEntryオブジェクトを作成して、HostNameプロパティを参照します。

[VB.NET]
'IPアドレスからホスト名を取得
server = "66.218.71.80"

'IPHostEntryのインスタンスを作成
'.NET Framework 2.0以降は次のようにする
Dim iphe As System.Net.IPHostEntry = System.Net.Dns.GetHostEntry(server)
'.NET Framework 1.1以前は次のようにする
'Dim iphe As System.Net.IPHostEntry = System.Net.Dns.Resolve(server)
'または
'Dim iphe As System.Net.IPHostEntry = System.Net.Dns.GetHostByAddress(server)

'ホスト名を取得
Console.WriteLine(iphe.HostName)
'この結果は例えば「w1.scd.yahoo.com」
[C#]
//IPアドレスからホスト名を取得
string server = "66.218.71.80";

//IPHostEntryのインスタンスを作成
//.NET Framework 2.0以降は次のようにする
System.Net.IPHostEntry iphe = System.Net.Dns.GetHostEntry(server);
//.NET Framework 1.1以前は次のようにする
//System.Net.IPHostEntry iphe = System.Net.Dns.Resolve(server);
//または
//System.Net.IPHostEntry iphe = System.Net.Dns.GetHostByAddress(server)

//ホスト名を取得
Console.WriteLine(iphe.HostName);
//この結果は例えば「w1.scd.yahoo.com」

補足:Resolve、GetHostByName、GetHostByAddress 、GetHostEntryメソッドは同期的に処理を行うため、呼び出すと終了するまでスレッドをブロックします。非同期で行うには、それぞれ、BeginResolve、BeginGetHostByName、BeginGetHostAddresses、BeginGetHostEntryで処理を開始し、EndResolve、EndGetHostByName、EndGetHostAddresses、EndGetHostEntryで終了させます。

  • 履歴:
  • 2007/1/24 .NET Framework 2.0に関する記述を追加。