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设置按钮的disabled属性的实现代码
Nov 28 Javascript
javascript重复绑定事件造成的后果说明
Mar 02 Javascript
jquery if条件语句的写法
May 19 Javascript
Laravel中常见的错误与解决方法小结
Aug 30 Javascript
ES6正则的扩展实例详解
Apr 25 Javascript
jQuery EasyUI Layout实现tabs标签的实例
Sep 26 jQuery
JS实现点击拉拽轮播图pc端移动端适配
Sep 05 Javascript
vuejs实现折叠面板展开收缩动画效果
Sep 06 Javascript
vue 本地环境跨域请求proxyTable的方法
Sep 19 Javascript
vue中进行微博分享的实例讲解
Oct 14 Javascript
使用node-media-server搭建一个简易的流媒体服务器
Jan 20 Javascript
vue 实现上传组件
May 31 Vue.js
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运行速度的一些小技巧分享
2012/07/03 PHP
php根据操作系统转换文件名大小写的方法
2014/02/24 PHP
PHP利用MySQL保存session的实现思路及示例代码
2014/09/09 PHP
Node.js实战 建立简单的Web服务器
2012/03/08 Javascript
关于全局变量和局部变量的那些事
2013/01/11 Javascript
利用JS进行图片的切换即特效展示图片
2013/12/03 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
2013/12/19 Javascript
为指定的元素添加遮罩层的示例代码
2014/01/15 Javascript
JavaScript插件化开发教程 (四)
2015/01/27 Javascript
JS仿iGoogle自定义首页模块拖拽特效的方法
2015/02/13 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
nodejs创建web服务器之hello world程序
2015/08/20 NodeJs
JS中的二叉树遍历详解
2016/03/18 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
2016/12/17 Javascript
基于JS实现网页中的选项卡(两种方法)
2017/06/16 Javascript
vue2.0 自定义组件的方法(vue组件的封装)
2018/06/05 Javascript
js实现图片3D轮播效果
2019/09/21 Javascript
微信小程序利用云函数获取手机号码
2019/12/17 Javascript
JavaScript实现Tab选项卡切换
2020/02/13 Javascript
如何在JavaScript中使用localStorage详情
2021/02/04 Javascript
[48:47]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
从Python的源码来解析Python下的freeblock
2015/05/11 Python
3分钟学会一个Python小技巧
2018/11/23 Python
Python远程视频监控程序的实例代码
2019/05/05 Python
python django框架中使用FastDFS分布式文件系统的安装方法
2019/06/10 Python
应届大学生自荐信
2013/12/05 职场文书
博士学位自我鉴定范文
2013/12/26 职场文书
银行工作检查书范文
2014/01/31 职场文书
运动会跳远广播稿5篇
2014/09/17 职场文书
2014年大学生党员评议表自我评价
2014/09/20 职场文书
学校党支部公开承诺书
2015/04/30 职场文书
成绩单家长意见
2015/06/03 职场文书
ES6 解构赋值的原理及运用
2021/05/25 Javascript
react中的DOM操作实现
2021/06/30 Javascript
解析MySQL索引的作用
2022/03/03 MySQL