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 相关文章推荐
简单三步,搞掂内存泄漏
Mar 10 Javascript
ExtJS 2.0 实用简明教程之布局概述
Apr 29 Javascript
jQuery 对Select的操作备忘记录
Jul 04 Javascript
通过正则格式化url查询字符串实现代码
Dec 28 Javascript
js判断文本框剩余可输入字数的方法
Feb 04 Javascript
asp知识整理笔记3(问答模式)
Sep 27 Javascript
jquery中checkbox使用方法简单实例演示
Nov 24 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
Jun 23 Javascript
微信小程序 图片宽度自适应的实现
Apr 06 Javascript
Vue 2.0的数据依赖实现原理代码简析
Jul 10 Javascript
vue-cli常用设置总结
Feb 24 Javascript
js实现简易ATM功能
Oct 27 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常用函数 推荐收藏保存
2010/02/21 PHP
PHP安全的URL字符串base64编码和解码
2014/06/19 PHP
php轻松实现文件上传功能
2016/03/03 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
wordpress自定义标签云与随机获取标签的方法详解
2019/03/22 PHP
Prototype Number对象 学习
2009/07/19 Javascript
基于jQuery实现的水平和垂直居中的div窗口
2011/08/08 Javascript
JavaScript/jQuery 表单美化插件小结
2012/02/14 Javascript
JavaScript中的Primitive对象封装介绍
2014/12/31 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
jquery动态导航插件dynamicNav用法实例分析
2015/09/06 Javascript
jQuery插件Validate实现自定义校验结果样式
2016/01/18 Javascript
原生js实现回复评论功能
2017/01/18 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
2019/05/14 Javascript
javascript实现时间日期的格式化的方法汇总
2020/08/06 Javascript
解决nuxt 自定义全局方法,全局属性,全局变量的问题
2020/11/05 Javascript
python 性能提升的几种方法
2016/07/15 Python
python 循环while和for in简单实例
2016/08/16 Python
python对DICOM图像的读取方法详解
2017/07/17 Python
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
tensorflow TFRecords文件的生成和读取的方法
2018/02/06 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
2018/04/24 Python
python ftp 按目录结构上传下载的实现代码
2018/09/12 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
Python按钮的响应事件详解
2019/03/04 Python
pip 安装库比较慢的解决方法(国内镜像)
2019/10/06 Python
python with语句的原理与用法详解
2020/03/30 Python
Python unittest框架操作实例解析
2020/04/13 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
多视角3D可旋转的HTML5 Logo动画
2016/03/02 HTML / CSS
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
日本钓鱼渔具和户外用品网上商店:naturum
2016/08/07 全球购物
农村婚庆司仪主持词
2014/03/15 职场文书
就业协议书范本
2014/10/08 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
python实现A*寻路算法
2021/06/13 Python