原版的API品种,这是从以前的翻译和翻译风格不同
Node.js v0.10.31API手冊-文件夹
DNS
require('dns')
引入此模块。
dns
模块中的全部方法都使用了 C-Ares,除了 dns.lookup
使用了线程池中的 getaddrinfo(3)
。
C-Ares
比 getaddrinfo
要快得多,但系统解析器相对于其他程序的操作要更固定。
当一个用户使用 net.connect(80,
或
'google.com')http.get({
时会使用
host: 'google.com' })dns.lookup
方法。
假设用户须要进行大量的高速查询,则最好使用
C-Ares 提供的方法。
'www.google.com'
并反向解析所返回IP 地址的样例。
var dns = require('dns');
dns.resolve4('www.google.com', function (err, addresses) {
if (err) throw err;
console.log('addresses: ' + JSON.stringify(addresses));
addresses.forEach(function (a) {
dns.reverse(a, function (err, domains) {
if (err) {
throw err;
}
console.log('reverse for ' + a + ': ' + JSON.stringify(domains));
});
});
});
dns.lookup(domain, [family], callback)
将一个域名(比方 'google.com'
)解析为第一个找到的
A 记录(IPv4)或 AAAA 记录(IPv6)。地址族family
能够是数字 4
或 6
,缺省为 null
表示同一时候同意
IPv4 和 IPv6 地址族。
(err,
address, family)
。地址 address
參数为一个代表IPv4 或 IPv6 地址的字符串。
地址族family
參数为数字
4 或 6。地表 address
的地址族(不一定是之前传入 lookup
的值)。
err
为一个 Error
对象,当中 err.code
为错误代码。请记住 err.code
被设定为 'ENOENT'
的情况不仅是域名不存在,也可能是查询在其他途径出错,比方没有可用文件描写叙述符时。dns.resolve(domain, [rrtype], callback)
将一个域名(比方 'google.com'
)解析为一个 rrtype
指定记录类型的数组。
有效 rrtypes
取值有'A'
(IPv4
地址。缺省)、'AAAA'
(IPv6
地址)、'MX'
(邮件交换记录)、'TXT'
(文本记录)、'SRV'
(SRV
记录)、'PTR'
(用于
IP 反向查找)、'NS'
(域名server记录)和 'CNAME'
(别名记录)。
(err,
addresses)
。当中 addresses
中每一项的类型取决于记录类型,详见下文相应的查找方法。err
參数为一个 Error
对象,当中 err.code
为下文所列出的错误代码之中的一个。dns.resolve4(domain, callback)
于 dns.resolve()
一样。但仅仅用于查询
IPv4(A
记录)。
addresses
是一个
IPv4 地址的数组(比方['74.125.79.104', '74.125.79.105',
)。
'74.125.79.106']
dns.resolve6(domain, callback)
类似于 dns.resolve4()
。但用于
IPv6(AAAA
)查询。
dns.resolveMx(domain, callback)
类似于 dns.resolve()
,但用于邮件交换查询(MX
记录)。
addresses
为一个MX 记录的数组,每一项包括优先级和交换属性(比方
[{'priority': 10, 'exchange':
'mx.example.com'},...]
)。
dns.resolveTxt(domain, callback)
与 dns.resolve()
相似,但用于文本查询(TXT
记录)。addresses
为 domain
可用文本记录的数组(比方['v=spf1
)。
ip4:0.0.0.0 ~all']
dns.resolveSrv(domain, callback)
查询 SRV 记录,与 dns.resolve()
相似。 addresses
是域名 domain
可用的
SRV 记录数组, 每一条记录都包括优先级(priority)、权重(weight)、端口号(port)、服务名称(name)等属性 (比方: [{'priority':
)。
10, {'weight': 5, 'port': 21223, 'name': 'service.example.com'}, ...]
dns.resolveNs(domain, callback)
查询 NS 记录,与 dns.resolve()
相似。 addresses
是域名 domain
可用的
NS 记录数组, (列如:['ns1.example.com', 'ns2.example.com']
)。
dns.resolveCname(domain, callback)
查询 CNAME 记录,与 dns.resolve()
相似。 addresses
是域名 domain
可用的
CNAME 记录数组, (比如:['bar.example.com']
)。
dns.reverse(ip, callback)
反向解析 IP 地址。返回指向该 IP 地址的域名数组。
(err,
domains)
。err
參数为一个 Error
对象,当中 err.code
为下文所列出的错误代码之中的一个。Error codes
每一个 DNS 查询都可能返回下列错误代码之中的一个:
-
dns.NODATA
: DNS server返回无数据应答。 -
dns.FORMERR
: DNS 声称查询格式错误。 -
dns.SERVFAIL
: DNS server返回一般失败。 -
dns.NOTFOUND
: 域名未找到。 -
dns.NOTIMP
: DNS server未实现所请求操作。 -
dns.REFUSED
: DNS server拒绝查询。 -
dns.BADQUERY
: DNS 查询格式错误。 -
dns.BADNAME
: 域名格式错误。 -
dns.BADFAMILY
: 不支持的地址类型。 -
dns.BADRESP
: DNS 答复格式错误。 -
dns.CONNREFUSED
: 无法联系 DNS server。 -
dns.TIMEOUT
: 联系 DNS server超时。 -
dns.EOF
: 文件末端。 -
dns.FILE
: 读取文件错误。 -
dns.NOMEM
: 超出内存。 -
dns.DESTRUCTION
: 通道正在被销毁。 -
dns.BADSTR
: 字符串格式错误。 -
dns.BADFLAGS
: 指定了非法标记。 -
dns.NONAME
: 所给主机名非数字。 -
dns.BADHINTS
: 指定了非法提示标记。 -
dns.NOTINITIALIZED
: c-ares 库初始化尚未进行。 -
dns.LOADIPHLPAPI
: 载入 iphlpapi.dll 出错。 -
dns.ADDRGETNETWORKPARAMS
: 无法找到 GetNetworkParams 函数。 -
dns.CANCELLED
: DNS 搜索取消。