在 Node.js 中,可以通过 os
模块的 networkInterfaces
API 来获取当前机器的 IP 数据。返回的结果类似于 ifconfig
或 ipconfig
命令。
以获取当前主机的 IPv4 地址为例,可以写类似如下的代码:
function getIPAddress() {
const interfaces = require('os').networkInterfaces();
const results = Object.values(interfaces)
.flat()
.filter(interface => interface.family === 'IPv4')
.filter(interface => !interface.internal);
if (results.length === 0) return null;
return results[0].address;
}
简单的说明如下:
internal
用于表示当前的地址是否是本地回环地址或是其他外部无法访问的地址(例:127.0.0.1);family
用于表示当前地址的类型,将会是IPv4
或IPv6
中的一种;address
用于表示当前的 IP 地址;os.networkInterfaces
的返回是一个对象,key 用于表示 network interface,比如常见的lo
或者eth0
等。
更多的返回数据及解释,可以参考官方文档。