---
title: "resolve()"
description: "Resolves a hostname and a port to one or more IP addresses."
url: "https://wasix.org/docs/api-reference/wasix/resolve/"
markdown: "https://wasix.org/docs/api-reference/wasix/resolve.md"
---

# `resolve()`

Resolves a hostname and a port to one or more IP addresses.

## Description

The `resolve()` function resolves a hostname and a port to one or more IP addresses. It is similar to the `getaddrinfo` function in POSIX. The function performs a DNS resolution for the specified hostname and retrieves the corresponding IP addresses.

The resolved IP addresses are stored in the output buffer provided by the `addrs` parameter. Each IP address entry is represented by an `__wasi_addr_t` object. The function fills the output buffer with as many IP addresses as possible.

## Syntax

```ebnf
  ;;; This function fills the output buffer as much as possible.
  (@interface func (export "resolve")
    ;;; Host to resolve
    (param $host string)
    ;;; Port hint (zero if no hint is supplied)
    (param $port u16)
    ;;; The buffer where addresses will be stored
    (param $addrs (@witx pointer $addr))
    (param $naddrs $size)
    ;;; The number of IP addresses returned during the DNS resolution.
    (result $error (expected $size (error $errno)))
  )
```

## Parameters

- `ctx`: A mutable reference to the function environment.
- `host`: A pointer to the hostname to resolve.
- `host_len`: The length of the hostname string.
- `port`: The port hint to use during resolution. Use zero if no hint is supplied.
- `addrs`: The buffer where the resolved IP addresses will be stored.
- `naddrs`: The maximum number of IP addresses that the buffer can hold.
- `ret_naddrs`: A pointer to store the number of IP addresses returned during the DNS resolution.

## Return Value

The function returns a `Result` containing an `Errno` value. If the operation is successful, `Errno::Success` is returned. Otherwise, an appropriate `Errno` value indicating the error is returned.

## Notes

- The `resolve()` function performs a DNS resolution for the specified hostname and retrieves the corresponding IP addresses.
- The resolved IP addresses are stored in the output buffer provided by the `addrs` parameter.
- The `naddrs` parameter specifies the maximum number of IP addresses that the buffer can hold.
- The function will fill the output buffer with as many IP addresses as possible, up to the limit specified by `naddrs`.
- The resolved IP addresses are represented by `__wasi_addr_t` objects.
- The `port` parameter is a hint for the desired port associated with the IP addresses. Use zero if no hint is supplied.
- The specific behavior of the `resolve()` function may vary depending on the runtime environment and the underlying DNS resolution implementation.

---

[Documentation index](https://wasix.org/llms.txt) · [HTML version](https://wasix.org/docs/api-reference/wasix/resolve/)
