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 中对象的继承〔转贴〕
Jan 22 Javascript
javascript动画效果类封装代码
Aug 28 Javascript
jQuery动态添加 input type=file的实现代码
Jun 14 Javascript
浅谈页面装载js及性能分析方法
Dec 09 Javascript
jquery点击缩略图切换视频播放特效代码分享
Sep 15 Javascript
基于javascript实现仿百度输入框自动匹配功能
Jan 03 Javascript
原生JS实现跑马灯效果
Feb 20 Javascript
vue深入解析之render function code详解
Jul 18 Javascript
NW.js 简介与使用方法
Feb 01 Javascript
vue基于element的区间选择组件
Sep 07 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
Mar 25 Javascript
Vue关于组件化开发知识点详解
May 13 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中使用Oracle数据库(6)
2006/10/09 PHP
PHP 类相关函数的使用详解
2013/05/10 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
2013/06/29 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
2015/03/18 PHP
PHP版微信小店接口开发实例
2016/11/12 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
2019/05/09 PHP
兼容IE/Firefox/Opera/Safari的检测页面装载完毕的脚本Ext.onReady的实现
2009/07/14 Javascript
javascript列表框操作函数集合汇总
2013/11/28 Javascript
js 设置缓存及获取设置的缓存
2014/05/08 Javascript
JavaScript中使用typeof运算符需要注意的几个坑
2014/11/08 Javascript
javascript操作符"!~"详解
2015/02/10 Javascript
javascript中类的定义方式详解(四种方式)
2015/12/22 Javascript
jQuery Mobile 和 Kendo UI 的比较
2016/05/05 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
常用的js验证和数据处理总结
2016/08/02 Javascript
搭建Bootstrap离线文档的方法
2016/12/02 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
2017/08/15 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
js数组的基本使用总结
2021/01/18 Javascript
使用Python的Twisted框架实现一个简单的服务器
2015/04/16 Python
web.py 十分钟创建简易博客实现代码
2016/04/22 Python
用Python实现命令行闹钟脚本实例
2016/09/05 Python
使用EduBlock轻松学习Python编程
2018/10/08 Python
Python实现判断一个整数是否为回文数算法示例
2019/03/02 Python
python读出当前时间精度到秒的代码
2019/07/05 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
django序列化时使用外键的真实值操作
2020/07/15 Python
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
2015/03/27 HTML / CSS
Boden美国官网:英伦原创时装品牌
2017/07/03 全球购物
eBay爱尔兰站:eBay.ie
2019/08/09 全球购物
如何开启linux的ssh服务
2015/02/14 面试题
如何提高MySql的安全性
2014/06/19 面试题
给校长的建议书200字
2014/05/16 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
创业计划书之闲置物品置换中心
2019/12/25 职场文书