3 个版本 (破坏性更新)

使用旧的 Rust 2015

0.3.0 2022年6月12日
0.2.0 2020年7月7日
0.1.0 2016年8月23日

#glibc 中排名 3

Download history 6/week @ 2024-03-11 14/week @ 2024-03-25 78/week @ 2024-04-01 18/week @ 2024-04-22 14/week @ 2024-04-29 4/week @ 2024-05-06 5/week @ 2024-05-13 24/week @ 2024-05-20 7/week @ 2024-05-27 25/week @ 2024-06-03 23/week @ 2024-06-10 15/week @ 2024-06-17 18/week @ 2024-06-24

每月下载量 82
用于 3 个 crate (2 个直接使用)

MIT/Apache 许可

5KB
127 代码行

Resolv

通过 glibc 进行 DNS 解析。

注意:如果您只需要查询 DNS 名称的 IP 地址而不需要其他记录(MX,TXT 等),请考虑其他更便携的 Rust 库,如 dns-lookup

这使用 libresolv.so,通常通过 /etc/resolv.conf 配置来进行 DNS 解析。它允许您查询任何类型的 DNS 资源记录(例如 A,AAAA,MX,TXT 等),使用递归(如果您的系统 DNS 解析器允许的话),并执行 DNS 搜索算法来完成不完整的名称并使用您的 /etc/hosts 文件。

示例

extern crate resolv;

use resolv::{Resolver, Class, RecordType};
use resolv::record::MX;

fn main() {
    // You must create a mutable resolver object to hold the context.
    let mut resolver = Resolver::new().unwrap();

    // .query() and .search() are the main interfaces to the resolver.
    let mut response = resolver.query(b"gmail.com", Class::IN,
                                      RecordType::MX).unwrap();

    // You can iterate through answers as follows.  You must specify the
    // type of record.  A run-time error will occur if the records
    // decoded are of the wrong type.
    for answer in response.answers::<MX>() {
        println!("{:?}", answer);
    }
}

限制

您不能为整个系统指定一个与编辑 /etc/resolv.conf 不同的 DNS 服务器。

尚未支持所有 NS 记录类型。

使用线程安全的接口,这可能在较旧的系统上不可用。

根据系统上安装的 glibc 版本,选择多个适配器模块之一。可能某些系统需要从现有的一个中创建一个新的适配器模块。这些在 libresolv-sys/lib.d 中。欢迎提交带有额外适配器的拉取请求。

许可

根据您的选择,受以下任一许可协议的约束

贡献

除非您明确声明,否则您提交的任何贡献,根据 Apache-2.0 许可证的定义,将根据上述协议双许可,不附加任何额外条款或条件。

依赖

~43KB