Node.js dnsPromises.lookup() 方法
dnsPromises.lookup() 方法是 dns 模块的 promises 对象的内置应用程序编程接口,用于将给定参数的指定主机名的 IP 地址解析为第一个找到的 A (IPv4) 或 AAAA (IPv6) 记录。
句法:
dnsPromises.lookup( hostname, options )
参数:此方法有两个参数,如前所述,如下所述:
- 主机名:此参数指定一个字符串,表示要检查的主机名。
- 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