【悄咪咪学Node.js】7.4 os.networkInterfaces()

os.networkInterfaces()

1. 前言

本系列课程对非功能性函数内容安排中,将插入一些在生产过程中可能会用到对应函数的例子。

本节课将会引导大家学习了解:

  • os.networkInterfaces() 的使用方法
  • os.networkInterfaces() 在生产中的作用

学习完本节课程后,应该具有:

  • 使用 os 模块获取当前设备已分配了网络地址的网络接口的能力

2. os.networkInterfaces()

os.networkInterfaces() 可以获取当前设备已分配了网络地址的网络接口。

2.1 参数列表

参数名 参数类型 含义
address 分配的 IPv4 或 IPv6 地址
netmask IPv4 或 IPv6 的子网掩码
family IPv4 或 IPv6
mac 网络接口的 MAC 地址
internal 如果网络接口是不可远程访问的环回接口或类似接口,则为 true,否则为 false
scopeid IPv6 作用域 ID(仅当 family 为 IPv6 时存在)
cidr CIDR 表示法分配的带有路由前缀的 IPv4 或 IPv6 地址。如果 netmask 无效,则此属性会被设为 null

2.2 代码例子

我们先来执行下面这段代码:

js 复制代码
// 引入 os 模块
const os = require('os');

// 打印结果
console.log(os.networkInterfaces());

结果:

shell 复制代码
{ '以太网 2':
   [ { address: 'fe80::10f9:f005:bc53:f8be',
       netmask: 'ffff:ffff:ffff:ffff::',
       family: 'IPv6',
       mac: '00:16:3e:08:a5:f0',
       scopeid: 13,
       internal: false,
       cidr: 'fe80::10f9:f005:bc53:f8be/64' },
     { address: '172.16.55.128',
       netmask: '255.255.192.0',
       family: 'IPv4',
       mac: '00:16:3e:08:a5:f0',
       internal: false,
       cidr: '172.16.55.129/18' } ],
  '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' } ] }

我们可以看到,返回的对象中,键名是 连接名 ,如果是 windows 系统,可以到 控制面板 > 网络和 Internet 查看。

如果是 macos 或其它 linux 系统,会出现以 en、eth、lo 开头。其中 lo 为 本地环回 。其含义和上面用 windows 打印的 Loopback Pseudo-Interface 1 一样。通常其 IPv4 与 IPv6 分别为 172.0.0.1 和 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff。

3 生产中的作用

  1. 用法一:

    用于获取当前设备的 IP 信息 和 子网掩码,在一些需要监控服务器网络信息的系统中使用。

    这里也推荐一个实用性和方便性挺高的一个第三方库:ip

Tips:如果仅仅需要获取一些简单信息,没有必要用到库,也对项目轻量化起到一点作用。

4. 小结

本节课程我们主要学习了 os.networkInterfaces()及其在生产上的用法。

重点如下:

  1. 重点1

    os.networkInterfaces() 能获取当前设备一些网络信息。

相关推荐
怕浪猫1 小时前
2026年金九银十,我面了22个前端
前端·javascript·面试
前端的日常1 小时前
一个人+AI做情侣食谱小程序,30天纯赚
前端·javascript·后端
qq_316837752 小时前
阿里云百炼 fun-asr-realtime uniapp vue3 调用
javascript·vue.js·uni-app
默_笙3 小时前
🚊 别再让 AI 的记忆写两遍了:PostgreSQL 把关系查询和语义检索装进一张表
前端·javascript
lzhdim3 小时前
C#不为人知的10个魔法特性:资深开发者也会震惊的底层奥秘
java·前端·javascript·算法·c#
只睡四小时4 小时前
JS 手写 D-pad 空间导航:电视端焦点引擎实战
android·开发语言·前端·javascript·ecmascript·hls·空间导航
喵个咪6 小时前
GoWind Admin|风行 — 开箱即用的企业级全栈中后台框架:脚本系统实战
javascript·后端·go
樱花落木兰6 小时前
SpringBoot + ECharts 后台数据统计报表模块实战
java·javascript·spring boot·ai·log4j·github·echarts
愛芳芳6 小时前
element-plus+vite+vue3+pinpa+mock+typeScript搭建经典的电商管理后台
前端·javascript·typescript
2601_962177307 小时前
Windows 安装 Codex CLI 入门级教程
人工智能·windows·node.js·ai编程