#dns #async


A simple async DNS resolver

2 unstable releases

0.1.0 Sep 21, 2022
0.0.0 Jun 27, 2019

#131 in #dns


935 lines


This crate provides asynchronous DNS lookups.

In asynchronous Rust code, it is necessary to resolve URL names using DNS. In most cases, this is done by calling getaddrinfo on a blocking threadpool. However, since DNS is a UDP-based protocol, it doesn't make much sense to block on a thread when fully asynchronous options are available.

This crate provides a fully asynchronous alternative, based on the following mechanisms:

  • On Windows, it uses the DnsQueryEx function, which allows for non-blocking DNS queries.
  • On Unix, it uses a custom implementation of DNS provided by the dns-protocol crate. async-fs is used to read files and async-io is used for the actual UDP packets.

It returns the list of addresses that it found to be associated with the given name.


Dual licensed under the MIT and Apache 2.0 licenses.


~130K SLoC