- Node.js教程
- Node.js - 教程
- Node.js - 简介
- Node.js - 环境设置
- Node.js - 首次申请
- Node.js - REPL 终端
- Node.js - 命令行选项
- Node.js - 包管理器 (NPM)
- Node.js - 回调概念
- Node.js - 上传文件
- Node.js - 发送电子邮件
- Node.js - 活动
- Node.js - 事件循环
- Node.js - 事件发射器
- Node.js - 调试器
- Node.js - 全局对象
- Node.js - 控制台
- Node.js - 流程
- Node.js - 扩展应用程序
- Node.js - 包装
- Node.js - Express 框架
- Node.js - RESTful API
- Node.js - 缓冲器
- Node.js - Streams
- Node.js - 文件系统
- Node.js MySQL
- Node.js - MySQL 快速入门
- Node.js - MySQL创建数据库
- Node.js - MySQL创建表
- Node.js - MySQL Insert Into
- Node.js - MySQL Select From
- Node.js - MySQL Where 子句
- Node.js - MySQL Order By
- Node.js - MySQL Delete
- Node.js - MySQL Update
- Node.js - MySQL Join
- Node.js MongoDB
- Node.js - MongoDB 快速入门
- Node.js - MongoDB 创建数据库
- Node.js - MongoDB 创建集合
- Node.js - MongoDB Insert
- Node.js - MongoDB Find
- Node.js - MongoDB 查询
- Node.js - MongoDB 排序
- Node.js - MongoDB Delete
- Node.js - MongoDB Update
- Node.js - MongoDB Limit
- Node.js - MongoDB Join
- Node.js模块
- Node.js - 模块
- Node.js - 内置模块
- Node.js - utility 模块
- Node.js - Web 模块
Node.js - DNS 模块
Node.js DNS 模块用于执行实际的 DNS 查找以及使用底层操作系统名称解析功能。此模块提供异步网络包装器,可以使用以下语法导入。
var dns = require("dns")
方法
方法 | 描述 |
---|---|
dns.lookup(hostname[, options], callback) | 将主机名(例如“google.com”)解析为第一个找到的 A (IPv4) 或 AAAA (IPv6) 记录。options 可以是对象或整数。如果未提供选项,则 IP v4 和 v6 地址均有效。如果 options 是整数,则它必须是 4 或 6。 |
dns.lookupService(address, port, callback) | 使用 getnameinfo 将给定的地址和端口解析为主机名和服务。 |
dns.resolve(hostname[, rrtype], callback) | 将主机名(例如“google.com”)解析为 rrtype 指定的记录类型的数组。 |
dns.resolve4(hostname, callback) | 与 dns.resolve() 相同,但仅适用于 IPv4 查询(A 记录)。addresses 是 IPv4 地址的数组(例如 ['74.125.79.104', '74.125.79.105', '74.125.79.106']) |
dns.resolve6(hostname, callback) | 与 dns.resolve4() 相同,但 IPv6 查询(AAAA 查询)除外。 |
dns.resolveMx(hostname, callback) | 与 dns.resolve() 相同,但仅适用于邮件交换查询(MX 记录)。 |
dns.resolveTxt(hostname, callback) | 与 dns.resolve() 相同,但仅适用于文本查询(TXT 记录)。addresses 是可用于主机名的文本记录的二维数组(例如,[ ['v=spf1 ip4:0.0.0.0 ', '~all' ] ])。每个子数组都包含一条记录的 TXT 块。根据用例,它们可以连接在一起或单独处理。 |
dns.resolveSrv(hostname, callback) | 与 dns.resolve() 相同,但仅适用于服务记录(SRV 记录)。addresses 是可用于主机名的 SRV 记录的数组。SRV 记录的属性包括优先级、权重、端口和名称(例如,[{'priority': 10, 'weight': 5, 'port': 21223, 'name': 'service.example.com'}, ...])。 |
dns.resolveSoa(hostname, callback) | 与 dns.resolve() 相同,但仅用于开始权限记录查询(SOA 记录)。 |
dns.resolveNs(hostname, callback) | 与 dns.resolve() 相同,但仅适用于名称服务器记录(NS 记录)。addresses 是可用于主机名的名称服务器记录的数组(例如,['ns1.example.com', 'ns2.example.com'])。 |
dns.resolveCname(hostname, callback) | 与 dns.resolve() 相同,但仅适用于规范名称记录(CNAME 记录)。addresses 是可用于主机名的规范名称记录的数组(例如,['bar.example.com'])。 |
dns.reverse(ip, callback) | 反向将 IP 地址解析为主机名数组。 |
dns.getServers() | 以字符串形式返回 IP 地址数组,这些字符串当前正用于解析。 |
dns.setServers(servers) | 将 IP 地址数组设置为字符串,将它们设置为用于解析的服务器。 |
RRtypes
以下是 dns.resolve()方法使用的有效rrtypes列表 -
- A − IPV4地址,默认
- AAAA − IPV6地址
- MX − 邮件交换记录
- TXT − 文本记录
- SRV − SRV 记录
- PTR - 用于反向 IP 查找
- NS - 名称服务器记录
- CNAME − 规范名称记录
- SOA - 权限记录的开始
错误代码
每个DNS查询都可以返回以下错误代码之一 -
- dns.NODATA − DNS服务器返回了没有数据的答案。
- dns.FORMERR − DNS 服务器声明查询格式错误。
- dns.SERVFAIL − DNS服务器返回常规故障。
- dns.NOTFOUND − 未找到域名。
- dns.NOTIMP − DNS服务器不实现请求的操作。
- dns.REFUSED − DNS服务器拒绝查询。
- dns.BADQUERY − 格式错误的DNS查询。
- dns.BADNAME − 格式错误的主机名。
- dns.BADFAMILY − 不支持的地址系列。
- dns.BADRESP − 格式错误的DNS回复。
- dns.CONNREFUSED − 无法联系 DNS 服务器。
- dns.TIMEOUT − 联系DNS服务器时超时。
- 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 查询已取消。
使用以下代码创建名为 main.js 的 js 文件 -
var dns = require('dns');
dns.lookup('www.google.com', function onLookup(err, address, family) {
console.log('address:', address);
dns.reverse(address, function (err, hostnames) {
if (err) {
console.log(err.stack);
}
console.log('reverse for ' + address + ': ' + JSON.stringify(hostnames));
});
});
现在运行main.js以查看结果 -
$ node main.js
验证输出
address: 173.194.46.83
reverse for 173.194.46.83: ["ord08s11-in-f19.1e100.net"]
reverse for 173.194.46.83: ["ord08s11-in-f19.1e100.net"]