---
name: "ne_addr_error"
section: "3"
platform: "linux"
package: "libneon27-dev"
version: "0.34.2-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/ne_addr_resolve"
---

# ne\_addr\_error(3)

functions to resolve hostnames to addresses

Part of [ne\_addr\_resolve(3)](/ne_addr_resolve/3.md).

## NAME

ne\_addr\_resolve, ne\_addr\_result, ne\_addr\_first, ne\_addr\_next, ne\_addr\_error, 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***);**

**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 is currently unused, and must be passed as 0.

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.

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);
```

## SEE ALSO

ne\_iaddr\_print

## COPYRIGHT

Copyright © 2001-2024 Joe Orton\
