April 5, 2008, 8:16 p.m.
posted by bert
Converting a Hostname to an IP AddressProblemYou have a string representation of a host (such as www.oreilly.com), and you need to obtain the IP address from this hostname. SolutionUse the Dns.GetHostEntry method to get the IP addresses. In the following code, a hostname is provided to the GetHostEntry method, which returns an IPHostEntry from which a string of addresses can be constructed. If the hostname does not resolve, a SocketException stating "No such host is known" is thrown.
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.GetHostEntry(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.AppendFormat("IP Address: {0};", address.ToString());
}
return addressList.ToString( );
}
// …
// Writes "IP Address: 208.201.239.37;IP Address: 208.201.239.36;"
Console.WriteLine(HostName2IP("www.oreilly.com"));
DiscussionAn 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. If the entry cannot be resolved, a SocketException is thrown. See AlsoSee the "DNS Class," "IPHostEntry Class," and "IPAddress" topics in the MSDN documentation. |
- Comment