📜  Node.js dns.lookup() 方法

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

Node.js dns.lookup() 方法

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

句法:

dns.lookup( hostname, options, callback )

参数:该方法具有上述三个参数,如下所述:

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

    返回值:该方法通过回调函数返回错误、IP地址族和IP地址。这些数据作为参数传递给回调函数。

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

    示例 1:

    // Node.js program to demonstrate the 
    // dns.lookup() method 
       
    // Accessing dns module
    const dns = require('dns');
      
    // Setting options for dns.lookup() method
    const options = {
          
        // Setting family as 6 i.e. IPv6
        family: 6,
        hints: dns.ADDRCONFIG | dns.V4MAPPED,
    };
      
    // Calling dns.lookup() for hostname geeksforgeeks.org
    // and displaying them in console as a callback
    dns.lookup('geeksforgeeks.org', options, (err, address, family) =>
            console.log('address: %j family: IPv%s', address, family));
    

    输出:

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

    示例 2:

    // Node.js program to demonstrate the 
    // dns.lookup() method 
       
    // Accessing dns module
    const dns = require('dns');
      
    // Setting options for dns.lookup()
    // method, all as true
    const options = {
        all:true,
    };
      
    // Calling dns.lookup() for hostname
    //  geeksforgeeks.org and displaying
    // them in console as a callback
    dns.lookup('geeksforgeeks.org', options, (err, addresses) =>
            console.log('addresses: %j', addresses));
    

    输出:

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

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

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