This documentation is archived and is not being maintained.

Dns.GetHostAddresses Method

Returns the Internet Protocol (IP) addresses for the specified host.

Namespace:  System.Net
Assembly:  System (in System.dll)

public static IPAddress[] GetHostAddresses(
	string hostNameOrAddress


Type: System.String

The host name or IP address to resolve.

Return Value

Type: System.Net.IPAddress[]
An array of type IPAddress that holds the IP addresses for the host that is specified by the hostNameOrAddress parameter.


hostNameOrAddress is null.


The length of hostNameOrAddress is greater than 126 characters.


An error is encountered when resolving hostNameOrAddress.


hostNameOrAddress is an invalid IP address.

The GetHostAddresses method queries a DNS server for the IP addresses associated with a host name. If hostNameOrAddress is an IP address, this address is returned without querying the DNS server.

When an empty string is passed as the host name, this method returns the IPv4 addresses of the local host for all operating systems except Windows Server 2003; for Windows Server 2003, both IPv4 and IPv6 addresses for the local host are returned.


This member emits trace information when you enable network tracing in your application. For more information, see Network Tracing.

The following code example uses the GetHostAddresses method to resolve an IP address to an array of type IPAddress.

public static void DoGetHostAddresses(string hostname)
    IPAddress[] ips;

    ips = Dns.GetHostAddresses(hostname);

    Console.WriteLine("GetHostAddresses({0}) returns:", hostname);

    foreach (IPAddress ip in ips)
        Console.WriteLine("    {0}", ip);
// Signals when the resolve has finished.
static ManualResetEvent* resolveFinished = 
    new ManualResetEvent(false);

// define the state object for the callback. 
// use hostName to correlate calls with the proper result.
__gc class ResolveState
    String* hostName;
    IPAddress * resolvedIPs[];

    ResolveState(String* host)
        hostName = host;

    __property void set_IPs(IPAddress* IPs[])
        {resolvedIPs = IPs;}
    __property IPAddress* get_IPs()[]{return resolvedIPs;}

    __property void set_host(String* host) {hostName = host;}
    __property String* get_host() {return hostName;}

// Record the IPs in the state object for later use.
static void ResolveCallback(IAsyncResult* ar)
    ResolveState* ioContext = 

    ioContext->IPs = Dns::EndResolveToAddresses(ar);

// Determine the Internet Protocol(IP) addresses for this 
// host asynchronously.
static void DoAsyncResolveToAddresses(String* hostName)
    ResolveState* ioContext= new ResolveState(hostName);

        new AsyncCallback(0, ResolveCallback), ioContext);
    // Wait here until the resolve completes 
    // (the callback calls .Set())

        "Asynchronous Resolve of {0} finished, IPs ", 

    IEnumerator* ips = ioContext->IPs->GetEnumerator();
    while (ips->MoveNext())
        Console::Write("{0} ", ips->Current);


Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0