getAddressInfo

Provides _protocol-independent translation from host names to socket addresses. If advanced functionality is not required, consider using getAddress for compatibility with older systems.

@safe
getAddressInfo
(
T...
)
(
scope const(char)[] node
,
scope T options
)

Parameters

node const(char)[]

string containing host name or numeric address

options T

optional additional parameters, identified by type:

  • string - service name or port number
  • AddressInfoFlags - option flags
  • AddressFamily - address family to filter by
  • SocketType - socket type to filter by
  • ProtocolType - protocol to filter by

Return Value

Type: AddressInfo[]

Array with one AddressInfo per socket address.

Throws

SocketOSException on failure, or SocketFeatureException if this functionality is not available on the current system.

Examples

// Roundtrip DNS resolution
auto results = getAddressInfo("www.digitalmars.com");
assert(results[0].address.toHostNameString() ==
    "digitalmars.com");

// Canonical name
results = getAddressInfo("www.digitalmars.com",
    AddressInfoFlags.CANONNAME);
assert(results[0].canonicalName == "digitalmars.com");

// IPv6 resolution
results = getAddressInfo("ipv6.google.com");
assert(results[0].family == AddressFamily.INET6);

// Multihomed resolution
results = getAddressInfo("google.com");
assert(results.length > 1);

// Parsing IPv4
results = getAddressInfo("127.0.0.1",
    AddressInfoFlags.NUMERICHOST);
assert(results.length && results[0].family ==
    AddressFamily.INET);

// Parsing IPv6
results = getAddressInfo("::1",
    AddressInfoFlags.NUMERICHOST);
assert(results.length && results[0].family ==
    AddressFamily.INET6);

Meta