node.js域名解析实现方法详解


Posted in Javascript onNovember 05, 2019

本文实例讲述了node.js域名解析实现方法。分享给大家供大家参考,具体如下:

域名解析:dns.lookup()

比如我们要查询域名 www.qq.com 对应的ip,可以通过 dns.lookup()

var dns = require('dns');
dns.lookup('www.qq.com', function(err, address, family){
  if(err) throw err;
  console.log('例子A: ' + address);
});

输出如下:

例子A: 182.254.34.74

我们知道,同一个域名,可能对应多个不同的ip。那么,如何获取一个域名对应的多个ip呢?可以这样。

var dns = require('dns');
var options = {all: true};
dns.lookup('www.qq.com', options, function(err, address, family){
  if(err) throw err;
  console.log('例子B: ' + address);
});

输出如下:

例子B: [{"address":"182.254.34.74","family":4},{"address":"240e:e1:8100:28::2:16","family":6}]

域名解析:dns.resolve4()

上文的例子,也可以通过 dns.resolve4() 来实现。

var dns = require('dns');
dns.resolve4('id.qq.com', function(err, address){
  if(err) throw err;
  console.log( JSON.stringify(address) );
});

输出如下:

["61.151.186.39","101.227.139.179"]

如果要获取IPv6的地址,接口也差不多,不赘述。

dns.lookup()跟dns.resolve4()的区别

从上面的例子来看,两个方法都可以查询域名的ip列表。那么,它们的区别在什么地方呢?

可能最大的差异就在于,当配置了本地Host时,是否会对查询结果产生影响。

  • dns.lookup():有影响。
  • dns.resolve4():没有影响。

举例,在hosts文件里配置了如下规则。

127.0.0.1 www.qq.com

运行如下对比示例子,就可以看到区别。

var dns = require('dns');
dns.lookup('www.qq.com', function(err, address, family){
  if(err) throw err;
  console.log('配置host后,dns.lokup =>' + address);
});
dns.resolve4('www.qq.com', function(err, address, family){
  if(err) throw err;
  console.log('配置host后,dns.resolve4 =>' + address);
});

输出如下

➜  2016.11.03-node-dns git:(master) ✗ node lookup-vs-resolve4.js
配置host后,dns.resolve4 =>182.254.34.74
配置host后,dns.lokup =>127.0.0.1

其他接口

对DNS有了解的同学,应该对A记录、NS记录、CNAME等不陌生,同样可以通过相应的API进行查询,感兴趣的可以自行尝试下。

希望本文所述对大家node.js程序设计有所帮助。

Javascript 相关文章推荐
javascript form 验证函数 弹出对话框形式
Jun 23 Javascript
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
Feb 04 Javascript
JavaScript.The.Good.Parts阅读笔记(二)作用域&闭包&减缓全局空间污染
Nov 16 Javascript
检测jQuery.js是否已加载的判断代码
May 20 Javascript
js输出阴历、阳历、年份、月份、周示例代码
Jan 29 Javascript
js实现的简单图片浮动效果完整实例
May 10 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
Dec 13 Javascript
Bootstrap 模态框(Modal)带参数传值实例
Aug 20 Javascript
深入理解ES6之数据解构的用法
Jan 13 Javascript
jQuery实现菜单的显示和隐藏功能示例
Jul 24 jQuery
vue源码nextTick使用及原理解析
Aug 13 Javascript
KnockoutJS数组比较算法实例详解
Nov 25 Javascript
node.js文件操作系统实例详解
Nov 05 #Javascript
Vue中使用matomo进行访问流量统计的实现
Nov 05 #Javascript
node.js实现简单的压缩/解压缩功能示例
Nov 05 #Javascript
js实现随机点名程序
Sep 17 #Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
Nov 05 #Javascript
Vue通过WebSocket建立长连接的实现代码
Nov 05 #Javascript
原生js实现随机点名功能
Nov 05 #Javascript
You might like
浅谈php函数serialize()与unserialize()的使用方法
2014/08/19 PHP
php实现两表合并成新表并且有序排列的方法
2014/12/05 PHP
PHP使用flock实现文件加锁的方法
2015/07/01 PHP
js代码实现微博导航栏
2015/07/30 PHP
thinkphp修改配置进入默认首页的方法
2017/02/07 PHP
javascript new后的constructor属性
2010/08/05 Javascript
select、radio表单回显功能实现避免使用jquery载入赋值
2013/06/08 Javascript
javascript获取网页宽高方法汇总
2015/07/19 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
2015/11/17 Javascript
JS判断字符串字节数并截取长度的方法
2016/03/05 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
Node.js Sequelize如何实现数据库的读写分离
2016/10/23 Javascript
jQuery在header中设置请求信息的方法
2017/03/06 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
jQuery实现拼图小游戏(实例讲解)
2017/07/24 jQuery
微信小程序三级联动选择器使用方法
2020/05/19 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
2018/08/29 Javascript
如何实现双向绑定mvvm的原理实现
2019/05/28 Javascript
Python使用minidom读写xml的方法
2015/06/03 Python
Python递归函数定义与用法示例
2017/06/02 Python
Python爬取十篇新闻统计TF-IDF
2018/01/03 Python
Python网络编程使用select实现socket全双工异步通信功能示例
2018/04/09 Python
使用Python实现租车计费系统的两种方法
2018/09/29 Python
快速排序的四种python实现(推荐)
2019/04/03 Python
python归并排序算法过程实例讲解
2020/11/04 Python
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
Laura官网:加拿大女性的顶级时尚目的地
2019/09/20 全球购物
装潢设计实习自我鉴定
2013/09/19 职场文书
会计专业应届生求职信
2013/11/24 职场文书
国际金融专业大学生职业生涯规划书
2013/12/28 职场文书
公司门卫的岗位职责
2014/02/19 职场文书
推广活动策划方案
2014/08/23 职场文书
2015年信贷员工作总结
2015/04/28 职场文书
幼儿园秋季开学通知
2015/07/16 职场文书
2016婚礼主持词开场白
2015/11/24 职场文书