3 个版本 (破坏性更新)
使用旧的 Rust 2015
0.3.0 | 2022年6月12日 |
---|---|
0.2.0 | 2020年7月7日 |
0.1.0 | 2016年8月23日 |
在 #glibc 中排名 3
每月下载量 82 次
用于 3 个 crate (2 个直接使用)
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 版,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确声明,否则您提交的任何贡献,根据 Apache-2.0 许可证的定义,将根据上述协议双许可,不附加任何额外条款或条件。
依赖
~43KB