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 相关文章推荐
【消息提示组件】,兼容IE6/7&&FF2
Sep 04 Javascript
EasyUI中实现form表单提交的示例分享
Mar 01 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
Nov 06 Javascript
Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别
Dec 30 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
Mar 23 Javascript
第三篇Bootstrap网格基础
Jun 21 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
Nov 30 Javascript
JavaScript实现图片无缝滚动效果
Jul 07 Javascript
微信通过页面(H5)直接打开本地app的解决方法
Sep 09 Javascript
jQuery简单实现对数组去重及排序操作实例
Oct 31 jQuery
vue+webpack中配置ESLint
Nov 07 Javascript
JavaScript的console命令使用实例
Dec 03 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 递归效率分析
2009/11/24 PHP
PHP ? EasyUI DataGrid 资料取的方式介绍
2012/11/07 PHP
php获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
win7系统配置php+Apache+mysql环境的方法
2015/08/21 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
JS日历 推荐
2006/12/03 Javascript
JavaScript 以对象为索引的关联数组
2010/05/19 Javascript
js动态添加删除,后台取数据(示例代码)
2013/11/25 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
js判断手机号是否正确并返回的实现代码
2017/01/17 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
2017/03/21 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
2017/04/26 jQuery
Vue.js常用指令的使用小结
2017/06/23 Javascript
利用vue+elementUI实现部分引入组件的方法详解
2017/11/22 Javascript
Vue2.0用户权限控制解决方案的示例
2018/02/10 Javascript
VUE DEMO之模拟登录个人中心页面之间数据传值实例
2019/10/31 Javascript
bootstrap实现tab选项卡切换
2020/08/09 Javascript
python str与repr的区别
2013/03/23 Python
Python3实现发送QQ邮件功能(附件)
2020/12/23 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
2018/05/25 Python
Python模拟FTP文件服务器的操作方法
2020/02/18 Python
浅析python实现动态规划背包问题
2020/12/31 Python
简述Html5 IphoneX 适配方法
2018/02/08 HTML / CSS
如何通过jdbc调用存储过程
2012/04/19 面试题
大学生职业生涯设计书
2014/01/02 职场文书
新浪微博实习心得体会
2014/01/27 职场文书
给校长的建议书600字
2014/05/15 职场文书
2014年学校国庆主题活动方案
2014/09/16 职场文书
三好学生事迹材料
2014/12/24 职场文书
死亡赔偿协议书
2015/01/28 职场文书
2015年师德表现自我评价
2015/03/05 职场文书
四十年同学聚会致辞
2015/07/28 职场文书
户外拓展训练感想
2015/08/07 职场文书
golang中的空接口使用详解
2021/03/30 Python
python使用pywinauto驱动微信客户端实现公众号爬虫
2021/05/19 Python