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读取中文cookie时的乱码问题的解决方法
Oct 14 Javascript
IE图片缓存document.execCommand("BackgroundImageCache",false,true)
Mar 01 Javascript
常用的JavaScript模板引擎介绍
Feb 28 Javascript
jQuery子窗体取得父窗体元素的方法
May 11 Javascript
不得不分享的JavaScript常用方法函数集(上)
Dec 23 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
Apr 26 jQuery
xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
May 03 Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
Mar 15 Javascript
vue引用js文件的多种方式(推荐)
May 17 Javascript
angular中子控制器向父控制器传值的实例
Oct 08 Javascript
Vue-cli 移动端布局和动画使用详解
Aug 10 Javascript
JS PHP字符串截取函数实现原理解析
Aug 29 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中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
Thinkphp极验滑动验证码实现步骤解析
2020/11/24 PHP
Mootools 1.2教程 Fx.Tween的使用
2009/09/15 Javascript
js 动态文字滚动的例子
2011/01/17 Javascript
jquer之ajaxQueue简单实现代码
2011/09/15 Javascript
用js实现输入提示(自动完成)的实例代码
2013/06/14 Javascript
jQuery支持动态参数将函数绑定到事件上的方法
2015/03/17 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
jQuery validate验证插件使用详解
2016/05/11 Javascript
js实现符合国情的日期插件详解
2017/01/19 Javascript
详谈JS中数组的迭代方法和归并方法
2017/08/11 Javascript
详解基于vue-cli配置移动端自适应
2018/01/13 Javascript
详解React native fetch遇到的坑
2018/08/30 Javascript
小程序实现自定义导航栏适配完美版
2019/04/02 Javascript
vue中多路由表头吸顶实现的几种布局方式
2019/04/12 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法
2019/07/09 Javascript
vue控制多行文字展开收起的实现示例
2019/10/11 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
详解Python中的四种队列
2018/05/21 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
2018/10/28 Python
python双向链表原理与实现方法详解
2019/12/03 Python
用Python开发app后端有优势吗
2020/06/29 Python
CSS3 制作旋转的大风车(充满童年回忆)
2013/01/30 HTML / CSS
美国最大婚纱连锁店运营商:David’s Bridal
2019/03/12 全球购物
出生公证书样本
2014/04/04 职场文书
中职生求职信
2014/07/01 职场文书
党员剖析材料范文
2014/12/18 职场文书
作息时间调整通知
2015/04/22 职场文书
2015年国庆晚会主持词
2015/07/01 职场文书
中秋联欢会主持词
2015/07/04 职场文书
大学生军训感言
2015/08/01 职场文书
人事任命书范本
2015/09/21 职场文书
详细介绍python操作RabbitMq
2022/04/12 Python
springboot+rabbitmq实现智能家居实例详解
2022/07/23 Java/Android