源码:
function getLocalIPv(ver = 4) {
const interfaces = require('os').networkInterfaces()
for (let netDev in interfaces) {
for (let netProt of interfaces[netDev]) {
if (netProt.family === `IPv${ver}` && !netProt.internal && netProt.address !== '127.0.0.1') {
return netProt.address }}}}
用法:
getLocalIPv(4) //获取IPv4地址
getLocalIPv(6) //获取IPv6地址
详解:
Nodejs的os模块可以获取计算机自身相关信息。
os.networkInterfaces()方法获取网络接口信息,返回的数据如下示例:
os.networkInterfaces(): [
"以太网": [
{
address: '192.168.8.105', // IP地址
netmask: '255.255.255.0', //子网掩码
family: 'IPv4', //协议
mac: 'd4:5d:64:50:2b:ff', //mac地址
internal: false, //false表示外部(公有)IP,true表示内部(私有)IP
cidr: '192.168.8.105/24' //无类别域间路由
},
{
address: '240e:390:407c:b8f0:c240:422e:5c8f:2',
netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
family: 'IPv6',
mac: 'd4:5d:64:50:2b:ff',
internal: false,
cidr: '240e:390:407c:b8f0:c240:422e:5c8f:2/128',
scopeid: 0
},
略…… //还有本机ip之类的
],
"Wi-Fi": [
略…… //同以太网
],
"本地连接": [
略…… //同以太网
],
略…… //还有其他连接方式,比如蓝牙网络、USB网络之类的
]