Recipe14.2.Converting a Hostname to an IP Address


Recipe 14.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.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")); 

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. If the entry cannot be resolved, a SocketException is thrown.

See Also

See the "DNS Class," "IPHostEntry Class," and "IPAddress" topics in the MSDN documentation.



C# Cookbook
Secure Programming Cookbook for C and C++: Recipes for Cryptography, Authentication, Input Validation & More
ISBN: 0596003943
EAN: 2147483647
Year: 2004
Pages: 424

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net