#dns-resolver #dns-queries #dns #async-dns #c-ares #dns-query #dns-lookup

mini-c-ares-resolver

基于mini-c-ares的异步DNS解析器

4个版本

0.2.2 2023年10月10日
0.2.1 2023年9月18日
0.2.0 2023年8月28日
0.1.0 2023年7月31日

#492 in 异步

Download history 2/week @ 2024-03-10 27/week @ 2024-03-31

每月下载量 357

MIT 许可证

58KB
978

mini-c-ares-resolver

c-ares-resolver的分支,使用mini-c-ares代替c-ares,用于异步DNS请求。

此crate提供三种解析器类型 - ResolverFutureResolverBlockingResolver

  • Resolver是底层c-ares库的最薄包装。它通过回调返回答案。其他解析器都是基于这个构建的。
  • FutureResolver将答案作为std::future::Future返回。
  • BlockingResolver根本不是异步的 - 正如其名所示,它将阻塞直到查找完成。

文档

API文档在这里:https://docs.rs/mini-c-ares-resolver.

贡献

贡献应发送至c-ares-resolver.


lib.rs:

基于c-ares构建的DNS解析器,用于异步DNS请求。

此crate提供三种解析器类型 - ResolverFutureResolverBlockingResolver

  • Resolver是底层c-ares库的最薄包装。它通过回调返回答案。其他解析器都是基于这个构建的。

  • FutureResolver将答案作为std::future::Future返回。

  • BlockingResolver根本不是异步的 - 正如其名所示,它将阻塞直到查找完成。

在所有解析器上

  • query_xxx等方法对应于c-ares函数ares_query,该函数“启动一个单问题DNS查询”。

  • search_xxx等方法对应于c-ares函数ares_search,该函数“启动一系列单问题DNS查询...使用通道的搜索域名以及HOSTALIAS环境变量给出的主机别名文件”。

有关详细信息,请参阅c-ares文档

示例

use futures_executor::block_on;

fn main() {
    let resolver = mini_c_ares_resolver::FutureResolver::new().unwrap();
    let query = resolver.query_a("google.com");
    let response = block_on(query);
    match response {
        Ok(result) => println!("{}", result),
        Err(e) => println!("Lookup failed with error '{}'", e)
    }
}

更多展示如何使用该库的示例可以在这里找到。

依赖项

~3–12MB
~132K SLoC