當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。