DekGenius.com
[ Team LiB ] Previous Section Next Section

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.

    [ Team LiB ] Previous Section Next Section