DNS utility functions

libuv provides asynchronous variants of getaddrinfo and getnameinfo.

Data types

uv_getaddrinfo_t

getaddrinfo request type.

void (*uv_getaddrinfo_cb)(uv_getaddrinfo_t* req, int status, struct addrinfo* res)

Callback which will be called with the getaddrinfo request result once complete. In case it was cancelled, status will have a value of UV_ECANCELED.

uv_getnameinfo_t

getnameinfo request type.

void (*uv_getnameinfo_cb)(uv_getnameinfo_t* req, int status, const char* hostname, const char* service)

Callback which will be called with the getnameinfo request result once complete. In case it was cancelled, status will have a value of UV_ECANCELED.

Public members

uv_loop_t* uv_getaddrinfo_t.loop

Loop that started this getaddrinfo request and where completion will be reported. Readonly.

struct addrinfo* uv_getaddrinfo_t.addrinfo

Pointer to a struct addrinfo containing the result. Must be freed by the user with uv_freeaddrinfo().

在 1.3.0 版更改: the field is declared as public.

uv_loop_t* uv_getnameinfo_t.loop

Loop that started this getnameinfo request and where completion will be reported. Readonly.

char[NI_MAXHOST] uv_getnameinfo_t.host

Char array containing the resulting host. It's null terminated.

在 1.3.0 版更改: the field is declared as public.

char[NI_MAXSERV] uv_getnameinfo_t.service

Char array containing the resulting service. It's null terminated.

在 1.3.0 版更改: the field is declared as public.

参见

The uv_req_t members also apply.

API

int uv_getaddrinfo(uv_loop_t* loop, uv_getaddrinfo_t* req, uv_getaddrinfo_cb getaddrinfo_cb, const char* node, const char* service, const struct addrinfo* hints)

Asynchronous getaddrinfo(3).

Either node or service may be NULL but not both.

hints is a pointer to a struct addrinfo with additional address type constraints, or NULL. Consult man -s 3 getaddrinfo for more details.

Returns 0 on success or an error code < 0 on failure. If successful, the callback will get called sometime in the future with the lookup result, which is either:

  • status == 0, the res argument points to a valid struct addrinfo, or
  • status < 0, the res argument is NULL. See the UV_EAI_* constants.

Call uv_freeaddrinfo() to free the addrinfo structure.

在 1.3.0 版更改: the callback parameter is now allowed to be NULL, in which case the request will run synchronously.

void uv_freeaddrinfo(struct addrinfo* ai)

Free the struct addrinfo. Passing NULL is allowed and is a no-op.

int uv_getnameinfo(uv_loop_t* loop, uv_getnameinfo_t* req, uv_getnameinfo_cb getnameinfo_cb, const struct sockaddr* addr, int flags)

Asynchronous getnameinfo(3).

Returns 0 on success or an error code < 0 on failure. If successful, the callback will get called sometime in the future with the lookup result. Consult man -s 3 getnameinfo for more details.

在 1.3.0 版更改: the callback parameter is now allowed to be NULL, in which case the request will run synchronously.

参见

The uv_req_t API functions also apply.