📜  Node.js dnsPromises.lookup() 方法

📅  最后修改于: 2022-05-13 01:56:30.404000             🧑  作者: Mango

Node.js dnsPromises.lookup() 方法

dnsPromises.lookup() 方法是 dns 模块的 promises 对象的内置应用程序编程接口,用于将给定参数的指定主机名的 IP 地址解析为第一个找到的 A (IPv4) 或 AAAA (IPv6) 记录。

句法:

dnsPromises.lookup( hostname, options )

参数:此方法有两个参数,如前所述,如下所述:

  1. 主机名:此参数指定一个字符串,表示要检查的主机名。
  2. options:它是整数或对象的形式。它指定查找期间要使用的选项。
    • family:它是一个整数值,指定记录的family。其值必须在 4、6 或 0 之间,0 表示同时返回 IPv4 和 IPv6,4 表示返回 IPv4,6 表示返回 IPv6。默认值为 0。
    • 提示:它是一个数字,指定一个或多个 getaddrinfo 标志。可以通过对它们的值进行按位或来传递多个标志。
    • all:它是一个布尔参数。如果设置为 TRUE,则回调返回数组中的所有解析地址,否则返回单个地址。其默认值为 FALSE。
    • 逐字:它是一个布尔参数。如果它设置为 TRUE,则回调将获取 DNS 解析器返回的所有已解析的 IPv4 和 IPv6 地址。如果设置为 FALSE,IPv4 地址将放在 IPv6 地址之前。现在默认值为 FALSE,但预计在不久的将来会为 TRUE。

返回值:此方法返回错误、IP 地址族和 IP 地址。

下面的例子说明了 Node.js 中 dnsPromises.lookup() 方法的使用:

示例 1:

// Node.js program to demonstrate the   
// dnsPromises.lookup() method
  
// Accessing promises object from dns module
const dns = require('dns');
const dnsPromises = dns.promises;
   
// Setting options for dnsPromises.lookup() method
const options = {
      
    // Setting family as 6 i.e. IPv6
    family: 6,
    hints: dns.ADDRCONFIG | dns.V4MAPPED,
};
   
// Calling dnsPromises.lookup() for hostname
// geeksforgeeks.org
dnsPromises.lookup('geeksforgeeks.org', options).then((response) => {
  console.log(' family: IPv%s address: %j', response.family, response.address);
});

输出:

family: IPv6 address: "fd00:0:14:13::22da:3e74"

示例 2:

// Node.js program to demonstrate the   
// dnsPromises.lookup() method
  
// Accessing promises object from dns module
const dns = require('dns');
const dnsPromises = dns.promises;
   
// Setting options for dnsPromises.lookup()
// method, all as true
const options = {
    all:true,
};
  
dnsPromises.lookup('geeksforgeeks.org', options).then((response) => {
    console.log('addresses: %j', response);
});

输出:

addresses: [{"address":"34.218.62.116", "family":4},
{"address":"fd00:0:14:13::22da:3e74", "family":6}]

示例 3:

// Node.js program to demonstrate the   
// dnsPromises.lookup() method
  
// Accessing promises object from dns module
const dns = require('dns');
const dnsPromises = dns.promises;
   
// Setting options for dnsPromises.lookup()
//  method, all as true
const options = {
    all:true,
};
   
// Asynchronous function 
(async function() {
      
    // Address from lookup function
    const addresses = await dnsPromises.lookup(
                    'geeksforgeeks.org', options);
      
    // Printing  addresses
    console.log("from async: ");
    console.log(addresses);   
})();

输出:

from async:
[ { address: '34.218.62.116', family: 4 },
  { address: 'fd00:0:14:13::22da:3e74', family: 6 } ]

注意:以上程序将使用node index.js命令编译运行。

参考: https://nodejs.org/api/dns.html#dns_dnspromises_lookup_hostname_options