Recipe 13.2 Converting a Hostname to an IP Address
Problem
You have a string
representation of a host (such as
www.oreilly.com), and you need to obtain the IP
address from this hostname.
Solution
Use the Dns.Resolve
method to get the IP addresses. In the following code, a hostname is
provided to the Resolve method that returns an
IPHostEntry from which a string of addresses can
be constructed and returned:
using System;
using System.Net;
using System.Text;
// ...
public static string HostName2IP(string hostname)
{
// resolve the hostname into an iphost entry using the dns class
IPHostEntry iphost = System.Net.Dns.Resolve(hostname);
// get all of the possible IP addresses for this hostname
IPAddress[] addresses = iphost.AddressList;
// make a text representation of the list
StringBuilder addressList = new StringBuilder( );
// get each ip address
foreach(IPAddress address in addresses)
{
// append it to the list
addressList.Append("IP Address: ");
addressList.Append(address.ToString( ));
addressList.Append(";");
}
return addressList.ToString( );
}
// ...
// writes "IP Address: 208.201.239.37;IP Address: 208.201.239.36;"
Console.WriteLine(HostName2IP("www.oreilly.com"));
Discussion
An
IPHostEntry can associate multiple IP addresses
with a single hostname via the AddressList
property. AddressList is an array of
IPAddress objects, each of which holds a single IP
address. Once the IPHostEntry is resolved, the
AddressList can be looped over using
foreach to create a string that shows all of the
IP addresses for the given hostname.
See Also
See the "DNS Class,"
"IPHostEntry Class," and
"IPAddress" topics in the MSDN
documentation.
|