---
name: "ne_addr_resolve"
section: "3"
platform: "linux"
package: "neon"
version: "0.37.1-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/ne_addr_resolve"
---

# ne\_addr\_resolve(3)

functions to resolve hostnames to addresses

## NAME

ne\_addr\_resolve, ne\_addr\_result, ne\_addr\_first, ne\_addr\_next, ne\_addr\_error, ne\_addr\_canonical, ne\_addr\_destroy - functions to resolve hostnames to addresses

## SYNOPSIS

```
#include <ne_socket.h>
```

**ne\_sock\_addr \*ne\_addr\_resolve(const char \****hostname***, int** *flags***);**

**int ne\_addr\_result(const ne\_sock\_addr \****addr***);**

**const ne\_inet\_addr \*ne\_addr\_first(ne\_sock\_addr \****addr***);**

**const ne\_inet\_addr \*ne\_addr\_next(ne\_sock\_addr \****addr***);**

**char \*ne\_addr\_error(const ne\_sock\_addr \****addr***, char \****buffer***, size\_t** *bufsiz***);**

**const char \*ne\_addr\_canonical(const ne\_sock\_addr \****addr***);**

**void ne\_addr\_destroy(ne\_sock\_addr \****addr***);**

## DESCRIPTION

The **ne\_addr\_resolve** function resolves the given *hostname*, returning an **ne\_sock\_addr** object representing the address (or addresses) associated with the hostname. The *flags* parameter should be zero, or if NE\_ADDR\_CANON used, the canonical name for the hostname will be determined.

The *hostname* passed to **ne\_addr\_resolve** can be a DNS hostname (e.g. "www.example.com") or an IPv4 dotted quad (e.g. "192.0.34.72"); or, on systems which support IPv6, an IPv6 hex address, which may be enclosed in brackets, e.g. "\[::1\]".

To determine whether the hostname was successfully resolved, the **ne\_addr\_result** function is used, which returns non-zero if an error occurred. If an error did occur, the **ne\_addr\_error** function can be used, which will copy the error string into a given *buffer* (of size *bufsiz*).

The functions **ne\_addr\_first** and **ne\_addr\_next** are used to retrieve the Internet addresses associated with an address object which has been successfully resolved. **ne\_addr\_first** returns the first address; **ne\_addr\_next** returns the next address after the most recent call to **ne\_addr\_next** or **ne\_addr\_first**, or NULL if there are no more addresses. The **ne\_inet\_addr** pointer returned by these functions can be passed to **ne\_sock\_connect** to connect a socket.

If the NE\_ADDR\_CANON flag was used with **ne\_addr\_resolve**, the canonical hostname can be retrieved using **ne\_addr\_canonical**.

After the address object has been used, it should be destroyed using **ne\_addr\_destroy**.

## RETURN VALUE

**ne\_addr\_resolve** returns a pointer to an address object, and never NULL. **ne\_addr\_error** returns the *buffer* parameter.

## EXAMPLES

The code below prints out the set of addresses associated with the hostname www.google.com.

```
ne_sock_addr *addr;
char buf[256];
addr = ne_addr_resolve("www.google.com", 0);
if (ne_addr_result(addr)) {
    printf("Could not resolve www.google.com: %s\n",
           ne_addr_error(addr, buf, sizeof buf));
} else {
    const ne_inet_addr *ia;
    printf("www.google.com:");
    for (ia = ne_addr_first(addr); ia != NULL; ia = ne_addr_next(addr)) {
        printf(" %s", ne_iaddr_print(ia, buf, sizeof buf));
    }
    putchar('\n');
}
ne_addr_destroy(addr);
```

## HISTORY

**ne\_addr\_canonical** was added in neon 0.30.0.

## SEE ALSO

[**ne\_iaddr\_print**(3)](/ne_iaddr_print/3.md)

## COPYRIGHT

Copyright © 2001-2026 Joe Orton\
