📜  Node.js os.networkInterfaces() 方法

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

Node.js os.networkInterfaces() 方法

os.networkInterfaces() 方法是 os 模块的内置应用程序编程接口,用于获取有关计算机网络接口的信息。

句法:

os.networkInterfaces()

参数:此方法不接受任何参数。

返回值:此方法返回一个对象,其中包含有关每个网络接口的信息。返回的对象将包含网络接口数组,该数组再次包含以下属性:

  • 地址:一个字符串,指定分配的网络地址,即 IPv4 或 IPv6/
  • 网络掩码:指定 IPv4 或 IPv6 网络掩码的字符串。
  • family:指定 Family 的字符串,值为 IPv4 或 IPv6 之一。
  • mac:一个字符串,指定网络接口的 MAC 地址。
  • internal:一个布尔值,如果接口是环回一,则为 true,否则为 false。
  • scopeid:一个数字,用于指定 IPv6 的范围 ID。
  • cidr:一个字符串,它使用 CIDR 表示法的路由前缀指定分配的 IPv4 或 IPv6 地址。如果网络掩码无效,则设置为 null。

以下示例说明了 Node.js 中os.networkInterfaces() 方法的使用:

示例 1:

// Node.js program to demonstrate the   
// os.networkInterfaces() Method
  
// Allocating os module
const os = require('os');
  
// Print os.networkInterfaces() value
console.log(os.networkInterfaces());

输出:

{ 'Wi-Fi':
   [ { address: 'fe80::242a:3451:7fb2:3ab1',
       netmask: 'ffff:ffff:ffff:ffff::',
       family: 'IPv6',
       mac: 'b3:52:16:13:de:b9',
       scopeid: 3,
       internal: false,
       cidr: 'fe80::242a:3451:7fb2:3ab1/64' },
     { address: '192.168.0.5',
       netmask: '255.255.255.0',
       family: 'IPv4',
       mac: 'b3:52:16:13:de:b9',
       internal: false,
       cidr: '192.168.0.5/24' } ],
  'Loopback Pseudo-Interface 1':
   [ { address: '::1',
       netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
       family: 'IPv6',
       mac: '00:00:00:00:00:00',
       scopeid: 0,
       internal: true,
       cidr: '::1/128' },
     { address: '127.0.0.1',
       netmask: '255.0.0.0',
       family: 'IPv4',
       mac: '00:00:00:00:00:00',
       internal: true,
       cidr: '127.0.0.1/8' } ] }

示例 2:

// Node.js program to demonstrate the   
// os.networkInterfaces() Method
  
// Allocating os module
const os = require('os');
  
// Print os.networkInterfaces() value
var net_int = os.networkInterfaces();
  
var no_of_network_interfaces = 0;
  
for (var key in net_int) {
  console.log(key);
  var net_infos=net_int[key];
     
  net_infos.forEach(element => {      
  no_of_network_interfaces++;
  console.log("\tinterface:");
  
    for (var attr in element){
      console.log("\t\t" + attr + 
          " : " + element[attr] );
    }
  });  
}
  
console.log("total number of Network "
  + "interfaces is " + no_of_network_interfaces);

输出:

Wi-Fi
        interface:
                address : fe80::242a:3451:7fb2:3ab1
                netmask : ffff:ffff:ffff:ffff::
                family : IPv6
                mac : b3:52:16:13:de:b9
                scopeid : 3
                internal : false
                cidr : fe80::242a:3451:7fb2:3ab1/64
        interface:
                address : 192.168.0.5
                netmask : 255.255.255.0
                family : IPv4
                mac : b3:52:16:13:de:b9
                internal : false
                cidr : 192.168.0.5/24
Loopback Pseudo-Interface 1
        interface:
                address : ::1
                netmask : ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
                family : IPv6
                mac : 00:00:00:00:00:00
                scopeid : 0
                internal : true
                cidr : ::1/128
        interface:
                address : 127.0.0.1
                netmask : 255.0.0.0
                family : IPv4
                mac : 00:00:00:00:00:00
                internal : true
                cidr : 127.0.0.1/8
total number of Network interfaces is 4

注意:上面的程序将使用node filename.js命令编译和运行。

参考: https://nodejs.org/api/os.html#os_os_networkinterfaces