#c-ares #dns #dns-query #file-descriptor #api-bindings

mini-c-ares

A minimal Rust wrapper for the c-ares library, for asynchronous DNS requests, based on rust-c-ares

5次发布

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

856 in 异步

Download history 2/week @ 2024-03-11 27/week @ 2024-04-01

313 每月下载量
mini-c-ares-resolver 中使用

MIT 许可证

145KB
3.5K SLoC

mini-c-ares

rust-c-ares的分支,为c-ares库提供异步DNS请求的最小Rust包装器。

大多数用户可能更喜欢 c-ares-resolver,它提供了更简单的API和更多功能。

文档

  • API文档在这里:here.

贡献

贡献应该发送到上游仓库 rust-c-ares


lib.rs:

c-ares 库的安全包装。

这个crate相当忠实地包装了 c-ares;也就是说,它保留了一些使用底层库的复杂性。如果你只想进行DNS查询,你可能更喜欢 c-ares-resolver crate,它为你完成了繁重的工作。

直接使用此crate需要您注意 c-ares,因为它会告诉你它关心的哪些文件描述符,并轮询这些文件描述符的活动。这可能需要您有一个事件循环或类似的东西来与之集成。

还在这里吗?此crate的使用方法如下

  • 创建一个 Channel

  • Channel 上进行查询。所有查询都接受回调,当查询完成时会调用这些回调。

  • c-ares 告诉你哪些文件描述符需要监听读取和/或写入事件。你可以通过提供回调函数来实现,每当感兴趣的文件描述符集合发生变化时,该回调函数将被调用,或者直接使用 Channelget_sock()fds() 来查询。

  • 按照 c-ares 的要求执行。也就是说,在它关心的文件描述符上监听它请求的事件。

  • 当文件描述符可读或可写时,在 Channel 上调用 process_fd()process() 来告诉 c-ares 发生了什么。

  • 如果你有挂起的查询且没有看到事件发生,你仍然需要在某个时候调用 process_fd()process(),以便给 c-ares 一个处理超时请求的机会。

如何使用此库的完整示例可以在 这里 找到。

依赖项

~650KB
~13K SLoC