当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js dns.lookup(hostname[, options], callback)用法及代码示例


dns.lookup(hostname[, options], callback)

历史
版本变化
v18.0.0

将无效回调传递给 callback 参数现在会抛出 ERR_INVALID_ARG_TYPE 而不是 ERR_INVALID_CALLBACK

v17.0.0

verbatim 选项现在默认为 true

v8.5.0

现在支持verbatim 选项。

v1.2.0

现在支持all 选项。

v0.1.90

添加于:v0.1.90


参数
  • hostname <string>
  • options <integer>|<Object>
    • family <integer> 记录系列。必须是 4600 值表示同时返回 IPv4 和 IPv6 地址。 默认: 0
    • hints <number>一个或多个支持 getaddrinfo 标志.可以按位传递多个标志OR荷兰国际集团的值。
    • all <boolean>true 时,回调返回数组中的所有解析地址。否则,返回单个地址。 默认: false
    • verbatim <boolean>true 时,回调按照 DNS 解析器返回的顺序接收 IPv4 和 IPv6 地址。当 false 时,IPv4 地址放在 IPv6 地址之前。 默认: true(地址未重新排序)。默认值可使用 dns.setDefaultResultOrder() --dns-result-order 进行配置。
  • callback <Function>
    • err <Error>
    • address <string> IPv4 或 IPv6 地址的字符串表示形式。
    • family <integer> 46 ,表示 address 的系列,如果地址不是 IPv4 或 IPv6 地址,则为 00 可能表明操作系统使用的名称解析服务存在错误。

将主机名(例如 'nodejs.org' )解析为第一个找到的 A (IPv4) 或 AAAA (IPv6) 记录。所有option 属性都是可选的。如果 options 是整数,则它必须是 46 - 如果未提供 options,则如果找到,则返回 IPv4 和 IPv6 地址。

all 选项设置为 true 时,callback 的参数更改为 (err, addresses) ,其中 addresses 是具有属性 addressfamily 的对象数组。

出错时,err Error 对象,其中 err.code 是错误代码。请记住,err.code 将设置为 'ENOTFOUND' 不仅在主机名不存在时,而且在查找因其他方式失败(例如没有可用的文件说明符)时。

dns.lookup() 不一定与 DNS 协议有关。该实现使用可以将名称与地址相关联的操作系统工具,反之亦然。这种实现会对任何 Node.js 程序的行为产生微妙但重要的影响。在使用 dns.lookup() 之前,请花一些时间查阅 Implementation considerations section

示例用法:

const dns = require('node:dns');
const options = {
  family: 6,
  hints: dns.ADDRCONFIG | dns.V4MAPPED,
};
dns.lookup('example.com', options, (err, address, family) =>
  console.log('address: %j family: IPv%s', address, family));
// address: "2606:2800:220:1:248:1893:25c8:1946" family: IPv6

// When options.all is true, the result will be an Array.
options.all = true;
dns.lookup('example.com', options, (err, addresses) =>
  console.log('addresses: %j', addresses));
// addresses: [{"address":"2606:2800:220:1:248:1893:25c8:1946","family":6}]

如果此方法作为其 util.promisify() ed 版本调用,并且 all 未设置为 true ,则它将为具有 addressfamily 属性的 Object 返回 Promise

支持的 getaddrinfo 标志#

历史
版本变化
v13.13.0、v12.17.0

添加了对 dns.ALL 标志的支持。

以下标志可以作为提示传递给 dns.lookup()

  • dns.ADDRCONFIG :将返回的地址类型限制为系统上配置的非环回地址类型。例如,仅当当前系统至少配置了一个 IPv4 地址时,才会返回 IPv4 地址。
  • dns.V4MAPPED :如果指定了 IPv6 系列,但未找到 IPv6 地址,则返回 IPv4 映射的 IPv6 地址。某些操作系统不支持它(例如FreeBSD 10.1)。
  • dns.ALL :如果指定了 dns.V4MAPPED,则返回解析的 IPv6 地址以及 IPv4 映射的 IPv6 地址。

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 dns.lookup(hostname[, options], callback)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。