Node.js DNS 模块
Node.js DNS 模块用于解析域名。引入 DNS 模块语法格式如下:
var dns = require("dns")
方法
| 序号 | 方法 & 描述 |
|---|---|
| 1 | dns.lookup(hostname[, options], callback) 将域名(比如 'w3cschool.cn')解析为第一条找到的记录 A (IPV4)或 AAAA(IPV6)。参数 options可以是一个对象或整数。如果没有提供 options,IP v4 和 v6 地址都可以。如果 options 是整数,则必须是 4 或 6。 |
| 2 | dns.lookupService(address, port, callback) 使用 getnameinfo 解析传入的地址和端口为域名和服务。 |
| 3 | dns.resolve(hostname[, rrtype], callback) 将一个域名(如 'w3cschool.cn')解析为一个 rrtype 指定记录类型的数组。 |
| 4 | dns.resolve4(hostname, callback) 和 dns.resolve() 类似, 仅能查询 IPv4 (A 记录)。 addresses IPv4 地址数组 (比如,['74.125.79.104', '74.125.79.105', '74.125.79.106'])。 |
| 5 | dns.resolve6(hostname, callback) 和 dns.resolve4() 类似, 仅能查询 IPv6( AAAA 查询) |
| 6 | dns.resolveMx(hostname, callback) 和 dns.resolve() 类似, 仅能查询邮件交换(MX 记录)。 |
| 7 | dns.resolveTxt(hostname, callback) 和 dns.resolve() 类似, 仅能进行文本查询 (TXT 记录)。 addresses 是 2-d 文本记录数组。(比如,[ ['v=spf1 ip4:0.0.0.0 ', '~all' ] ])。 每个子数组包含一条记录的 TXT 块。根据使用情况可以连接在一起,也可单独使用。 |
| 8 | dns.resolveSrv(hostname, callback) 和 dns.resolve() 类似, 仅能进行服务记录查询 (SRV 记录)。 addresses 是 hostname可用的 SRV 记录数组。 SRV 记录属性有优先级(priority),权重(weight), 端口(port), 和名字(name) (比如,[{'priority': 10, 'weight': 5, 'port': 21223, 'name': 'service.example.com'}, ...])。 |
| 9 | dns.resolveSoa(hostname, callback) 和 dns.resolve() 类似, 仅能查询权威记录(SOA 记录)。 |
| 10 | dns.resolveNs(hostname, callback) 和 dns.resolve() 类似, 仅能进行域名服务器记录查询(NS 记录)。 addresses 是域名服务器记录数组(hostname 可以使用) (比如, ['ns1.example.com', 'ns2.example.com'])。 |
| 11 | dns.resolveCname(hostname, callback) 和 dns.resolve() 类似, 仅能进行别名记录查询 (CNAME记录)。addresses 是对 hostname 可用的别名记录数组 (比如,, ['bar.example.com'])。 |
| 12 | dns.reverse(ip, callback) 反向解析 IP 地址,指向该 IP 地址的域名数组。 |
| 13 | dns.getServers() 返回一个用于当前解析的 IP 地址数组的字符串。 |
| 14 | dns.setServers(servers) 指定一组 IP 地址作为解析服务器。 |
rrtypes
以下列出了 dns.resolve() 方法中有效的 rrtypes值:
'A'IPV4 地址, 默认'AAAA'IPV6 地址'MX'邮件交换记录'TXT'text 记录'SRV'SRV 记录'PTR'用来反向 IP 查找'NS'域名服务器记录'CNAME'别名记录'SOA'授权记录的初始值
错误码
每次 DNS 查询都可能返回以下错误码:
dns.NODATA: 无数据响应。dns.FORMERR: 查询格式错误。dns.SERVFAIL: 常规失败。dns.NOTFOUND: 没有找到域名。dns.NOTIMP: 未实现请求的操作。dns.REFUSED: 拒绝查询。dns.BADQUERY: 查询格式错误。dns.BADNAME: 域名格式错误。dns.BADFAMILY: 地址协议不支持。dns.BADRESP: 回复格式错误。dns.CONNREFUSED: 无法连接到 DNS 服务器。dns.TIMEOUT: 连接 DNS 服务器超时。dns.EOF: 文件末端。dns.FILE: 读文件错误。dns.NOMEM: 内存溢出。dns.DESTRUCTION: 通道被摧毁。dns.BADSTR: 字符串格式错误。dns.BADFLAGS: 非法标识符。dns.NONAME: 所给主机不是数字。dns.BADHINTS: 非法HINTS标识符。dns.NOTINITIALIZED: c c-ares 库尚未初始化。dns.LOADIPHLPAPI: 加载 iphlpapi.dll 出错。dns.ADDRGETNETWORKPARAMS: 无法找到 GetNetworkParams 函数。dns.CANCELLED: 取消 DNS 查询。
实例
创建 main.js 文件,代码如下所示:
var dns = require('dns');
dns.lookup('www.github.com', function onLookup(err, address, family) {
console.log('ip 地址:', address);
dns.reverse(address, function (err, hostnames) {
if (err) {
console.log(err.stack);
}
console.log('反向解析 ' + address + ': ' + JSON.stringify(hostnames));
});
});
执行以上代码,结果如下所示:
address: 192.30.252.130
reverse for 192.30.252.130: ["github.com"]
Node.js DNS 模块的更多相关文章
- [Node.js]DNS模块
摘要 nds模块是node.js用于解析域名的模块,对域名的解析非常快捷方便. DNS 引入dns模块 //引入dns模块 var dns=require("dns"); 方法 序 ...
- Node.js工具模块
在Node.js的模块库中提供实用的模块数量. 这些模块都是很常见的,并同时开发基于任何节点的应用程序频繁使用. S.N. 模块的名称和说明 1 OS Module提供基本的操作系统相关的实用功能 2 ...
- Node.js的模块载入方式与机制
Node.js中模块可以通过文件路径或名字获取模块的引用.模块的引用会映射到一个js文件路径,除非它是一个Node内置模块.Node的内置模块公开了一些常用的API给开发者,并且它们在Node进程开始 ...
- Node.js Web模块
什么是Web服务器? Web服务器是处理由HTTP客户端发送的,如web浏览器的HTTP请求的软件应用程序,并返回响应于客户端网页. Web服务器通常伴随着图片,样式表和脚本的HTML文档. 大多数W ...
- node.js基础模块http、网页分析工具cherrio实现爬虫
node.js基础模块http.网页分析工具cherrio实现爬虫 一.前言 说是爬虫初探,其实并没有用到爬虫相关第三方类库,主要用了node.js基础模块http.网页分析工具cherri ...
- Node.js:模块
概要:本篇博客主要介绍node.js的模块 1.创建模块 在node.js中创建一个模块非常简单,因为一个文件就是一个模块.我们只需要明白如何从其他文件中获取这个模块.Node.js提供了 expor ...
- node.js之模块
node.js之模块 1.自定义模块的设置 加载自定义模块利用require: eg: require('./custom_module.js') 2.从模块外部访问模块内的成员 2.1使用expor ...
- Node.js的安装以及Node.js的模块管理
索引: Node.js的安装以及Node.js的模块管理Node.js开发环境搭建以及对ES6的支持Node.js构建Vue.js项目Vue.js单文件组件的开发基于Vue.js的UI组件(Eleme ...
- Node.js Net 模块
Node.js Net 模块提供了一些用于底层的网络通信的小工具,包含了创建服务器/客户端的方法,我们可以通过以下方式引入该模块: var net = require("net") ...
随机推荐
- Web微信
一.源代码地址: https://github.com/HuangAm/Webweixin 二.总结: 1.分析Http请求 - 请求方式:get.post等等 - URL:每个请求的url,固定部分 ...
- MongoDB系列五(地理空间索引与查询).
一.经纬度表示方式 MongoDB 中对经纬度的存储有着自己的一套规范(主要是为了可以在该字段上建立地理空间索引).包括两种方式,分别是 Legacy Coordinate Pairs (这个词实在不 ...
- Lua中table的实现-《Lua设计与实现》
本文来自<Lua设计与实现>的阅读笔记,推荐Lua学习者可以购买一本,深入浅出讲解lua的设计和实现原理,很赞,哈哈 Lua中对于表的设计,是基于数组和散列表,和其他语言不同,对于数组 ...
- Windows Socket的UDP和TCP编程介绍
1:网络中进程之间如何通信 为了实现进程之间通信,首要解决的问题是如何唯一标识一个进程,在本地可以通过进程PID来唯一标识一个进程,但是在网络中则是行不通的,其实TCP/IP协议族已经帮我们解决了这个 ...
- Swing图层的应用——实现tooltip显示
没有错是世纪前的swing. 在使用Swing的时候有个问题一直没有解决,就是Swing自带的tooltip不会跟随鼠标进行移动,而且移动到边界就会遮挡的问题.JCompoent有个createToo ...
- 自动化运维:使用flask+mysql+highcharts搭建监控平台
1.前言 本来想做一个比较完善的监控平台,只需要做少许改动就可以直接拿来用,但是在做的过程中发现要实现这个目标所需的工作量太大,而当前的工作中对其需求又不是特别明显.所以就退而求其次,做了一个类似教程 ...
- Git的安装和使用(托管至GitHub的方法)
一.下载Git 1.下载 下载地址: https://git-scm.com/download/win 根据你的操作系统选择32位或者64位 2.安装过程一路next 3.检验安装是否成功 在桌面点击 ...
- [WC 2014]紫荆花之恋
Description 强强和萌萌是一对好朋友.有一天他们在外面闲逛,突然看到前方有一棵紫荆树.这已经是紫荆花飞舞的季节了,无数的花瓣以肉眼可见的速度从紫荆树上长了出来. 仔细看看的话,这个大树实际上 ...
- [AHOI2005]约数研究
题目描述 科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel II”的长时间运算成为了可能.由于在去年一年的辛苦工作取得了不错的成绩,小联被允许用“Samu ...
- 因数(factor)
一个最基本的算数法则就是大于1的整数都能用1个或多个素数相乘的形式表示出来.当然,有多种质因子排列方案 如: 10=2×5=5×2 20=5×2×2=2×5×2=2×2×5 用f(k)表示k的质 ...