Nodejs获取本机ip(复制可直接用)

240 阅读1分钟

源码:

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网络之类的
]