39.Node.js域名解析---DNS模块
转自:http://www.runoob.com/nodejs/nodejs-module-system.html
Node.js DNS 模块用于解析域名。引入 DNS 模块语法格式如下:
var dns = require("dns")
方法
| 序号 | 方法 & 描述 |
|---|---|
| 1 | dns.lookup(hostname[, options], callback) 将域名(比如 'runoob.com')解析为第一条找到的记录 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) 将一个域名(如 'runoob.com')解析为一个 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"]
39.Node.js域名解析---DNS模块的更多相关文章
- Node.js:DNS模块的使用
Nodejs的DNS模块包涵有关DNS查询和操作的方法,下面介绍该模块的基本用法以及实现一个DNS查询小工具. 1.获取DNS服务器地址 使用getServers方法,该方法返回一个IP地址组成的数组 ...
- 利用Node.js的Net模块实现一个命令行多人聊天室
1.net模块基本API 要使用Node.js的net模块实现一个命令行聊天室,就必须先了解NET模块的API使用.NET模块API分为两大类:Server和Socket类.工厂方法. Server类 ...
- Node.js的Formidable模块的使用
今天总结了下Node.js的Formidable模块的使用,下面做一些简要的说明. 1) 创建Formidable.IncomingForm对象 var form = new formidab ...
- Node.js入门:模块机制
CommonJS规范 早在Netscape诞生不久后,JavaScript就一直在探索本地编程的路,Rhino是其代表产物.无奈那时服务端JavaScript走的路均是参考众多服务器端语言来 ...
- Node.js的net模块
net模块提供了一个异步网络包装器,用于TCP网络编程,它包含了创建服务器和客户端的方法 创建TCP服务器 net.createServer方法 创建客户端去连接服务器 net.connect方法 简 ...
- node.js中express模块创建服务器和http模块客户端发请求
首先下载express模块,命令行输入 npm install express 1.node.js中express模块创建服务端 在js代码同文件位置新建一个文件夹(www_root),里面存放网页文 ...
- node.js中ws模块创建服务端和客户端,网页WebSocket客户端
首先下载websocket模块,命令行输入 npm install ws 1.node.js中ws模块创建服务端 // 加载node上websocket模块 ws; var ws = require( ...
- node.js中net模块创建服务器和客户端(TCP)
node.js中net模块创建服务器和客户端 1.node.js中net模块创建服务器(net.createServer) // 将net模块 引入进来 var net = require(" ...
- 第5月第10天 node.js的request模块
1.node.js的request模块 http://www.cnblogs.com/meteoric_cry/archive/2012/08/18/2645530.html
随机推荐
- python 3.x 学习笔记5 (装饰器)
1.装饰器: 本质是函数,(装饰其他函数)就是为其他函数添加附加功能 原则: 1)不能修改被装饰的函数的源代码 2)不能修改被装饰的函数的调用方式 2.实现装饰器知识储备: 1)函数即“变量” 2)高 ...
- 使用ShareSDK分享-图片的链接
微信中使用ShareSDK分享,需要申请微信开放平台账号,并且以微信中的声明的应用签名打包程序. private void showShare(String url, String title, St ...
- WLAN 基础架构功能
WLAN 基础架构功能 Android WLAN 框架可帮助用户连接到优质 WLAN 网络(在有可用 WLAN 网络且需要连接到这类网络的情况下).Android 可通过多种方式来实现这一点: 打开网 ...
- k近邻法(k-nearest neighbor, k-NN)
一种基本分类与回归方法 工作原理是:1.训练样本集+对应标签 2.输入没有标签的新数据,将新的数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本最相似数据(最近邻)的分类标签. 3.一般 ...
- Spring拦截器 /* 和 /** 的区别
SpringMVC 拦截器拦截 /* 和 /** 的区别: /* : 匹配一级,即 /add , /query 等 /** : 匹配多级,即 /add , /add/user, /add/user/u ...
- sql server 2000 自动收缩数据库大小
转载.......http://mars968.blog.163.com/blog/static/7400033200941642356258/ SQLServer2000压缩日志及数据库文件 ...
- scala细节
在高版本中,scala使用了自己的String,而不是java.lang.String 字符串转数字:"33.4".toDouble "33.4".toF ...
- AP设备漫游阈值设置
在多个AP部署的场景下,默认情况下,手持移动设备(如PDA.手机)信号弱到断掉时才切换AP,无线信号很弱的情况下网络是非常的不稳定的,因此我们需要配置AP设备的漫游阈值(RSSI阈值),以便连接的无线 ...
- poj 2533 Longest Ordered Subsequence 最长递增子序列(LIS)
两种算法 1. O(n^2) #include<iostream> #include<cstdio> #include<cstring> using namesp ...
- Unity 之 C# 利用回调函数实现C++匿名函数
做C++开发的都用过匿名函数很好用,可是C#开发怎么实现呢?前几天做一个拍照功能的时候.我偶然发现某个函数假设是C++的话.用匿名函数太好了,于是開始研究C#的回调,代理.托付等,最后总算是实现了我想 ...