当前位置: 首页 > article >正文

Node.js——dns模块

dns模块1、resolve方法将域名解析为DNS记录2、lookup方法查询IP地址3、reverse方法反向解析IP地址4、dns模块中的各种错误代码在网络编程中开发者更倾向于使用域名而不是IP地址来指定网络连接的目标地址。在Node.js中提供dns模块以实现域名查找及域名解析的处理。在dns模块中提供了三个主方法及一系列便捷方法。其中三个主方法分别为用于将一个域名解析为一组DNS记录的resolve方法、用于将一个IP地址转换为一组域名的reverse方法以及用于将一个域名转换为一个IP地址的lookup方法dns模块中的其余便捷方法均为resolve方法的一种便捷形式。1、resolve方法将域名解析为DNS记录resolve方法用于将一个域名解析为一组DNS记录该方法的使用方式如下所示。dns.resolve(domain,[rrtype],callback)domain一个字符串用于指定需要被解析的域名例如www.google.com该域名字符串中可包括子域名rrtype可选一个字符串用于指定需要获取的记录类型可指定的记录类型如下所示。“A”​该参数值为默认参数值。当记录类型为“A”时该记录将一个IPv4地址映射为一个域名。“AAAA”​当记录类型为“AAAA”时该记录将一个IPv6地址映射为一个域名。“CNAME”​当记录类型为“CNAME”时表示该记录为一个域名的别名记录。例如一个www.example.com域名记录也许为一个example.com域名记录的别名记录。“MX”​MX记录指向一个使用SMTP的域中的邮件服务器。例如当你向persondomain.com邮件地址发送电子邮件时domain.com域的MX记录中保存了发送该邮件时的邮件服务器地址。“TXT”​TXT记录是为该域名附加的描述记录。“SRV”​SRV记录用于为一个特定域中所有可用服务提供信息。“PTR”​PTR记录用于反向地址解析该记录将一个域名映射为一个IPv4地址。“NS”​NSName Server记录是域名服务器记录用来指定该域名由哪个DNS服务器进行解析。callbackcallback参数值用于指定当域名解析操作完成时调用的回调函数该回调函数的指定方法如下所示。function(err,addresses){//回调函数代码略}err解析失败时触发的错误对象addresses一个数组其中存放了所有获取到的DNS记录示例使用resolve方法解析“www.baidu.com”域名并获取所有记录类型为“A”的DNS记录当记录类型为“A”时DNS记录为“www.baidu.com”域名的所有IPv4地址​如果解析失败在控制台中输出解析失败时触发的错误对象如果解析成功在控制台中输出所有获取到的IPv4地址。constdnsrequire(dns);dns.resolve(www.baidu.com,A,(e,r){if(e){console.log(e);}else{console.log(r);}});[220.181.111.1,220.181.111.232]在dns模块中为resolve方法定制了各种便捷方法所有这些方法都使用一个domain参数与一个callback参数这两个参数的用途及指定方法与resolve方法中所使用的domain参数与callback参数的用途及指定方法完全相同。这些方法见表方法说明dns.resolve4(domain, callback)用于获取记录类型为“A”的DNS记录即IPv4地址callback参数值回调函数中的address参数值数组中存放所有获取到的Pv4地址例如[‘74.125.79.104’,74.125.79.105,74.125.79.106]dns.resolve6(domain, callback)用于获取记录类型为“AAAA”的DNS记录即IPv6地址callback参数值回调函数中的address参数值数组中存放所有获取到的IPv6地址例如[2404:6800:4005:803:1010]dns.resolveMx(domain, callback)用于获取MX记录即邮件交换服务器记录callback参数值回调函数中的address参数值数组中存放所有获取到的MX记录每条记录中都包含个priority(优先级)属性及一个exchange(邮件交换服务器)属性例如[{priority:10,‘exchange’:mx.example.com)]dns.resolveTxt(domain, callback)用于获取TXT记录即为该域名附加的描述记录callback参数值回调函数中的address参数值数组中存放所有获取到的TXT记录例如[vspfl ip4:0.0.0.0~all]dns.resolveSrv(domain, callback)用于获取SRV记录即服务记录callback参数值回调函数中的address参数值数组中存放所有获取到的SRV记录每条记录中都包含一个priority(优先级)属性、一个weight(权重)属性、一个port(端口号)属性及一个name域名)属性例如[{priority’:l0,{‘weight’:5,‘port’:2l223,name:‘service.example.com’)]dns.resolveNs(domain, callback)用于获取NS记录即域名服务器记录callback参数值回调函数中的address参数值数组中存放所有获取到的域名服务器例如[‘nsl.example.com’,‘ns2.example.com’]dns.resolveCname(domain, callback)用于获取别名记录callback参数值回调函数中的address参数值数组中存放所有获取到的别名记录例如[bar.example.com]示例使用resolveMx方法解析“google.com”域名并获取所有邮件交换服务器记录如果解析失败在控制台中输出解析失败时触发的错误对象如果解析成功在控制台中输出所有获取到的邮件交换服务器记录。constdnsrequire(dns);dns.resolveMx(google.com,(err,addresses){if(err){console.log(err);}console.log(addresses);});[{exchange:smtp.google.com,priority:10}]2、lookup方法查询IP地址当使用resolve4方法或resolve6方法时由于callback参数值回调函数中的address参数值数组中存放所有获取到的IPv4地址或IPv6地址因此dns模块中也提供了另一个用于获取第一个被发现的IPv4地址或IPv6地址的lookup方法该方法的使用方式如下所示。dns.lookup(domain,[family],callback)domain一个字符串用于指定需要解析的域名例如www.google.com该域名字符串中可包括子域名family可选一个整数值用于指定需要获取的IP地址类型可指定的参数值为4或6。当参数值为4时获取IPv4地址当参数值为6时获取IPv6地址。默认参数值为null表示既可获取IPv4地址又可获取IPv6地址。callbackcallback参数值用于指定当获取地址操作完成时调用的回调函数该回调函数的指定方法如下所示。function(err,address,family){//回调函数代码略}err获取地址失败时触发的错误对象当域名不存在或查询失败时该错误对象的code属性值为ENOENTaddress一个字符串字符串值为获取到的IP地址family:一个整数用于标识获取到的IP地址类型。当family参数值为4时表示该地址为一个IPv4地址当family参数值为6时表示该地址为一个IPv6地址。示例使用lookup方法获取“google.com”域名的IPv4地址如果获取地址失败那么在控制台中输出获取地址失败时触发的错误对象如果获取地址成功那么在控制台中输出获取到的IPv4地址。constdnsrequire(dns);dns.lookup(google.com,4,(err,address){if(err){console.log(err);}else{console.log(address);}});142.251.45.1423、reverse方法反向解析IP地址在dns模块中可以使用reverse方法将一个IP地址反向解析为一组与该IP地址绑定的域名。该方法的使用方式如下所示。dns.reverse(ip,callback)ip一个字符串用于指定需要被反向解析的IP地址callback指定当反向解析地址操作完成时调用的回调函数该回调函数的指定方法如下所示。function(err,domains){//回调函数代码略}err反向解析地址失败时触发的错误对象domains一个数组其中存放了所有获取到的域名示例使用reverse方法反向解析“202.165.102.205”地址如果反向解析失败在控制台中输出反向解析失败时触发的错误对象如果反向解析成功在控制台中输出所有获取到的域名。constdnsrequire(dns);dns.reverse(202.165.102.205,(err,domain){if(err){console.log(err);}else{console.log(domain);}});[unknown.yahoo.com]4、dns模块中的各种错误代码在dns模块中在各种方法的callback参数值回调函数中err参数值为执行各种解析或反向解析操作时触发的错误对象可根据该错误对象的code属性值即触发的错误代号判断触发了什么错误。这些错误代号及其含义如下所示。ENODATADNS服务器返回一个没有数据的查询结果。EFORMERRDNS服务器发现客户端请求查询时使用了格式错误的查询参数。ESERVFAILDNS服务器执行查询操作失败。ENOTFOUND未发现任何域名。ENOTIMPDNS服务器不能进行客户端所请求的查询操作。EREFUSEDDNS服务器拒绝进行查询操作。EBADQUERY格式错误的DNS查询。EBADNAME域名格式错误。EBADFAMILY不支持的IP地址类型。EBADRESPDNS答复的格式错误。ECONNREFUSED不能建立与DNS服务器之间的连接。ETIMEOUT与DNS服务器之间建立连接超时。EEOF已到达文件底部。EFILE读取文件失败。ENOMEM没有足够的内存空间。EDESTRUCTION通道已被销毁。EBADSTR字符串格式错误。EBADFLAGS指定了错误的判断标志。ENONAME指定的主机名不是数值格式的。ENOTINITIALIZEDc-ares类库初始化工作尚未完成。ELOADIPHLPAPI加载iphlpapi.dll时触发了一个错误。EADDRGETNETWORKPARAMS未发现GetNetworkParams函数。ECANCELLEDDNS查询操作被取消。

相关文章:

Node.js——dns模块

dns模块1、resolve方法将域名解析为DNS记录2、lookup方法查询IP地址3、reverse方法反向解析IP地址4、dns模块中的各种错误代码在网络编程中,开发者更倾向于使用域名,而不是IP地址来指定网络连接的目标地址。在Node.js中,提供dns模块&#xff…...

从源码到实践:拆解PX4飞控如何处理Mavros的GPS/ENU坐标指令(附精准转换代码)

从源码到实践:拆解PX4飞控如何处理Mavros的GPS/ENU坐标指令(附精准转换代码) 当你在户外操控四旋翼无人机时,是否曾疑惑过GPS坐标如何精确转换为飞控能理解的ENU坐标系?PX4飞控内部究竟如何处理这些位置指令&#xff1…...

告别subfloat!LaTeX中minipage+subfigure排版多图的最佳实践

LaTeX多图排版进阶指南:minipage与subfigure的黄金组合 在学术论文和技术文档写作中,图片排版往往是让人头疼的问题。特别是当需要处理多张图片并为其添加子标题时,传统的subfloat方法常常会遇到标题溢出、无法自动换行等令人沮丧的情况。本文…...

解锁论文新境界:书匠策AI——你的毕业论文超级助手

在学术的征途中,毕业论文无疑是每位学子必须跨越的一道重要门槛。它不仅是对你四年学习成果的全面检验,更是你学术生涯的一次重要启航。然而,面对繁琐的选题、海量的文献、复杂的结构搭建以及无尽的文字雕琢,许多学子常常感到力不…...

商道融绿ESG评级实战指南:从数据获取到企业绿色转型效果验证

商道融绿ESG评级实战指南:从数据获取到企业绿色转型效果验证 当某制造业上市公司ESG负责人张总监第一次向董事会汇报绿色转型方案时,遭遇的质疑声至今记忆犹新:"这些环保投入真能带来实际效益吗?"直到他们运用商道融绿E…...

Scratch 3.0二次开发实战:从零构建自定义插件

1. 为什么需要自定义Scratch插件? Scratch作为全球最受欢迎的少儿编程工具,其模块化积木设计让编程学习变得直观有趣。但你可能遇到过这种情况:想做一个天气预报项目,却发现内置积木无法获取实时天气数据;或者想开发一…...

游戏开发中的乒乓缓存实战:Unity双缓冲技术如何提升渲染性能

游戏开发中的乒乓缓存实战:Unity双缓冲技术如何提升渲染性能 在Unity游戏开发中,渲染性能优化一直是开发者关注的焦点。当画面复杂度和特效层级不断提升时,传统的单缓冲机制往往难以满足流畅渲染的需求,这时乒乓缓存(P…...

10G DWDM/OTN系统DCM色散补偿

一、色散补偿的基本原则优先欠补偿,整体必需欠补偿。整体尽量均匀补偿。二、色散常识是线性的,可预测的,可逆的。这是色散能够补偿的根本原因,无论是传统的DCF方式还是100G的算法补偿。正如彩虹现象,白光经过色散作用&…...

5分钟搞懂阻抗匹配:从L型网络到Smith圆图实战指南(附ADS仿真步骤)

5分钟搞懂阻抗匹配:从L型网络到Smith圆图实战指南(附ADS仿真步骤) 引言:为什么阻抗匹配如此重要? 想象一下,你正在调试一块射频电路板,信号强度总是达不到预期。用频谱仪观察波形时,…...

-python-langchain框架(3-3-常用的几种文本分割 )

一、文本分割的核心逻辑与关键参数无论哪种分割方法,核心都是通过参数控制文本块的大小和关联性,先理清这几个核心参数,后续方法理解会事半功倍:chunk_size:单个文本块的最大长度(字符 / Token 数&#xff…...

LLM之Agent(三十七)|AI Agents(六):从Workflow到Agent的架构演进与选型指南

1. 从Workflow到Agent的技术演进路径 十年前我刚接触自动化系统时,所有流程都是硬编码的if-else逻辑。如今AI技术的爆发式发展,让系统架构经历了三次重要迭代: 第一代规则引擎就像铁路轨道,每个岔路口都需要人工预设判断条件。我参…...

基于Vivado工程的FPGA多通道以太网实时同步采集系统——AD7606八通道同步采集与UD...

基于FPGA多通道以太网实时同步采集系统 FPGA: Vivado工程 AD芯片:AD7606 传输协议:UDP 上位机开发软件:QT5.12 AD7606八通道同步采集,最高采样率200KHz,上位机发送指令开始采集,上位机通过千兆以太网udp进行数据传输 QT上位机软件:udp上位…...

传统永磁同步电机的FOC离散化simulink模型,效果较好 附赠传递函数离散化推导的文档

传统永磁同步电机的FOC离散化simulink模型,效果较好 附赠传递函数离散化推导的文档,初学者可以入手直接上干货。今天咱们聊聊永磁同步电机FOC控制在Simulink里的离散化实现,重点说说怎么让仿真模型更贴近实际DSP的运行环境。别被那些花里胡哨…...

python zipfile

# Python 的 zipfile:不只是打包文件那么简单 如果你用过压缩软件,大概知道 ZIP 格式是用来把多个文件打包成一个,顺便还能压缩节省空间。Python 里的 zipfile 模块就是干这个的,但它的能力远不止“打包”这么简单。 它到底是什么…...

python codecs

# 聊聊Python里的codecs模块 平时写Python处理文本文件,最常打交道的可能就是open()函数了。但不知道你有没有遇到过这种情况:打开一个文件,明明看着是中文,读出来却是一堆乱码。或者从某个老系统导出的数据,用普通方式…...

python binascii

## 关于Base64,你可能需要知道这些 在编程的世界里,数据并不总是以我们熟悉的形式存在。有时候,一段文字、一张图片,或者任何其他类型的数据,需要被转换成另一种形式才能在不同的系统中安全传输或存储。Base64就是这样…...

claw-code 源码详细分析:Parity Audit——如何用工程对比把「像不像」从口水战变成可重复报告?

涉及源码:src/parity_audit.py、src/reference_data/archive_surface_snapshot.json、commands_snapshot.json、tools_snapshot.json,src/main.py,tests/test_porting_workspace.py。1. 要解决什么问题 大型移植里,「我们已经很像…...

GetQzonehistory:如何一键完整导出QQ空间所有说说的终极指南

GetQzonehistory:如何一键完整导出QQ空间所有说说的终极指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还记得那些年在QQ空间写下的青春记忆吗?那些深夜的心…...

5分钟免费指南:如何将旧手机变成Linux高清摄像头

5分钟免费指南:如何将旧手机变成Linux高清摄像头 【免费下载链接】droidcam GNU/Linux/nix client for DroidCam 项目地址: https://gitcode.com/gh_mirrors/dr/droidcam 想让闲置的旧手机发挥新价值吗?DroidCam正是你需要的开源解决方案&#xf…...

5大核心功能深度解析:AltDrag如何重新定义Windows窗口管理效率

5大核心功能深度解析:AltDrag如何重新定义Windows窗口管理效率 【免费下载链接】altdrag :file_folder: Easily drag windows when pressing the alt key. (Windows) 项目地址: https://gitcode.com/gh_mirrors/al/altdrag 在Windows系统中,窗口管…...

RePKG:5个高效技巧助你掌握Wallpaper Engine资源处理与格式转换

RePKG:5个高效技巧助你掌握Wallpaper Engine资源处理与格式转换 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg RePKG是一款专注于Wallpaper Engine资源处理的开源工具&…...

环模式饲料制粒机设计【农业机械】【论文+14张CAD图纸+proe三维+答辩稿】

环模式饲料制粒机作为农业机械领域的关键设备,其核心作用在于将粉状饲料原料通过物理挤压转化为颗粒状成品。这一过程不仅提升了饲料的适口性与营养保留率,更通过颗粒的规则形态减少了运输与储存过程中的粉尘损失,为规模化养殖提供了稳定高效…...

5分钟搞定抖音音频提取:免费高效的douyin-downloader终极指南

5分钟搞定抖音音频提取:免费高效的douyin-downloader终极指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallbac…...

PowerToys Image Resizer:三步解决全场景图片批量处理难题

PowerToys Image Resizer:三步解决全场景图片批量处理难题 【免费下载链接】PowerToys Microsoft PowerToys is a collection of utilities that supercharge productivity and customization on Windows 项目地址: https://gitcode.com/GitHub_Trending/po/Power…...

Autoware Docker部署实战:从环境配置到镜像拉取全解析

1. Autoware与Docker环境部署概述 自动驾驶开发环境搭建一直是让开发者头疼的问题,尤其是像Autoware这样的大型开源框架。传统本地安装方式需要处理大量依赖关系,稍有不慎就会陷入"依赖地狱"。而Docker容器化部署正好能解决这个痛点——它把整…...

如何搭建终极游戏串流平台:Sunshine免费开源方案完整指南

如何搭建终极游戏串流平台:Sunshine免费开源方案完整指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想要在任何设备上畅玩PC游戏大作?Sunshine开源游戏…...

告别B站资源无法保存的烦恼:BiliTools跨平台工具箱完整使用指南

告别B站资源无法保存的烦恼:BiliTools跨平台工具箱完整使用指南 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliToo…...

MaaYuan自动化辅助工具高效配置避坑指南:零基础入门三步完成环境部署

MaaYuan自动化辅助工具高效配置避坑指南:零基础入门三步完成环境部署 【免费下载链接】MaaYuan 代号鸢 / 如鸢 一键长草小助手 项目地址: https://gitcode.com/gh_mirrors/ma/MaaYuan MaaYuan作为一款基于MaaFramework的自动化辅助工具,专为游戏日…...

抖音无水印视频批量下载全攻略:从痛点解决到高效管理

抖音无水印视频批量下载全攻略:从痛点解决到高效管理 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppor…...

熵,PSI,IV在机器学习中的应用

1.熵的概念: 熵,是一个热力学的概念。但在历史的发展中,造就了它非常丰富的内涵,进入了很多学科的视野。 1.混乱的熵 很多科普文章中,熵是用来度量混乱的。熵越小,这个时候越有秩序;而被打乱的时候,熵开始增大,直到最后一片混乱。 2.可能的熵 所谓的整洁,指的是合…...