引
在网络编程中,开发者更倾向于使用域名,而不是IP地址来指定网络连接的目标地址。在Node.js中,提供dns模块,以实现域名查找及域名解析的处理。
在dns模块中,提供了三个主方法及一系列便捷方法。其中三个主方法分别为用于将一个域名解析为一组DNS记录的resolve方法、用于将一个IP地址转换为一组域名的reverse方法以及用于将一个域名转换为一个IP地址的lookup方法,dns模块中的其余便捷方法均为resolve方法的一种便捷形式。
使用resolve方法将域名解析为DNS记录
resolve方法用于将一个域名解析为一组DNS记录。
dns.resolve(domain,[rrtype],callback)
resolve方法解析实例
var dns = require('dns');
dns.resolve('www.google.com','A',function(e,r) {
if (e) console.log(e);
else console.log(r);
});
使用lookup方法查询IP地址
当使用resolve4方法或resolve6方法时,由于callback参数值回调函数中的address参数值数组中存放所有获取到的IPv4地址或IPv6地址,因此,dns模块中也提供了另一个用于获取第一个被发现的IPv4地址或IPv6地址的lookup方法
dns.lookup(domain,[family],callback)
使用reverse方法反向解析IP地址
在dns模块中,可以使用reverse方法将一个IP地址反向解析为一组与该IP地址
绑定的域名。
dns.reverse(ip,callback)
dns模块中的各种错误代码
在dns模块中,在各种方法的callback参数值回调函数中,err参数值为执行各种解析或反向解析操作时触发的错误对象,可根据该错误对象的code属性值,即触发的错误代号判断触发了什么错误。这些错误代号及其含义如下所示。
- ENODATA:DNS服务器返回一个没有数据的查询结果。
- EFORMERR:DNS服务器发现客户端请求查询时使用了格式错误的查询参
数。
- ESERVFAIL:DNS服务器执行查询操作失败。
- ENOTFOUND:未发现任何域名。
- ENOTIMP:DNS服务器不能进行客户端所请求的查询操作。
- EREFUSED:DNS服务器拒绝进行查询操作。
- EBADQUERY:格式错误的DNS查询。
- EBADNAME:域名格式错误。
- EBADFAMILY:不支持的IP地址类型。
- EBADRESP:DNS答复的格式错误。
- ECONNREFUSED:不能建立与DNS服务器之间的连接。
- ETIMEOUT:与DNS服务器之间建立连接超时。
- EEOF:已到达文件底部。
- EFILE:读取文件失败。
- ENOMEM:没有足够的内存空间。
- EDESTRUCTION:通道已被销毁。
- EBADSTR:字符串格式错误。
- EBADFLAGS:指定了错误的判断标志。
- ENONAME:指定的主机名不是数值格式的。
- EBADHINTS:指定的提示标志无效。
- ENOTINITIALIZED:c-ares类库初始化工作尚未完成。
- ELOADIPHLPAPI:加载iphlpapi.dll时触发了一个错误。
- EADDRGETNETWORKPARAMS:未发现GetNetworkParams函数。
- ECANCELLED:DNS查询操作被取消。