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 相关文章推荐
基于JQuery模仿苹果桌面的Dock效果(初级版)
Oct 15 Javascript
jQuery.validate 常用方法及需要注意的问题
Mar 20 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
Feb 23 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
Mar 16 Javascript
每天一篇javascript学习小结(RegExp对象)
Nov 17 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
Dec 04 Javascript
在javascript中使用com组件的简单实现方法
Aug 17 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
Jan 13 Javascript
jquery中封装函数传递当前元素的方法示例
May 05 jQuery
动态加载、移除js/css文件的示例代码
Mar 20 Javascript
ng-alain表单使用方式详解
Jul 10 Javascript
jQuery表单元素过滤选择器用法实例分析
Feb 20 jQuery
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
《魔兽争霸3:重制版》翻车了?你想要的我们都没有
2019/11/07 魔兽争霸
PHP脚本的10个技巧(8)
2006/10/09 PHP
PHP实现长文章分页实例代码(附源码)
2016/02/03 PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
2017/06/07 PHP
JavaScript让IE浏览器event对象符合W3C DOM标准
2009/11/24 Javascript
javascript 设置某DIV区域内的checkbox复选框
2009/11/30 Javascript
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
2013/09/25 Javascript
JS取request值以及自动执行使用示例
2014/02/24 Javascript
js鼠标点击图片切换效果实现代码
2015/11/19 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
AngularJS表单和输入验证实例
2016/11/02 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
2018/08/13 Javascript
浅谈微信页面入口文件被缓存解决方案
2018/09/29 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
python中的__slots__使用示例
2015/02/26 Python
windows下ipython的安装与使用详解
2016/10/20 Python
Python实现字符型图片验证码识别完整过程详解
2019/05/10 Python
python中for循环变量作用域及用法详解
2019/11/05 Python
关于python pycharm中输出的内容不全的解决办法
2020/01/10 Python
全球酒店比价网:HotelsCombined
2017/06/20 全球购物
天猫国际进口超市直营:官方直采,一站购齐
2017/12/11 全球购物
zooplus意大利:在线宠物商店
2019/08/07 全球购物
如何删除一个表里面的重复行
2013/07/13 面试题
高级人员简历的自我评价分享
2013/11/03 职场文书
乡下人家教学反思
2014/02/01 职场文书
乡镇纠风工作实施方案
2014/03/22 职场文书
党的群众路线教育实践活动个人承诺书
2014/05/22 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
公司宣传语大全
2015/07/13 职场文书
老乡会致辞
2015/07/28 职场文书
导游词之绍兴柯岩古镇
2020/01/09 职场文书
详解Vue的options
2021/05/15 Vue.js
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL
DBCA命令行搭建Oracle ADG的流程
2021/06/11 Oracle
vue3引入highlight.js进行代码高亮的方法实例
2022/04/08 Vue.js