获取本地IP

function getLocalIP() {
    const os = require('os');
    const osType = os.type(); //系统类型
    const netInfo = os.networkInterfaces(); //网络信息
    let ip = '';
    if (osType === 'Windows_NT') { 
        for (let dev in netInfo) {
        	//win7的网络信息中显示为本地连接,win10显示为以太网
            if (dev === '本地连接' || dev === '以太网') {
                for (let j = 0; j < netInfo[dev].length; j++) {
                    if (netInfo[dev][j].family === 'IPv4') {
                        ip = netInfo[dev][j].address;
                        break;
                    }
                }
            }
        }

    } else if (osType === 'Linux') {
        ip = netInfo.eth0[0].address;
    } else if (osType === 'Darwin') {
    	// mac操作系统
    	// ip = netInfo.eth0[0].address;
    } else {
    	// 其他操作系统
    }

    return ip;
}

获取外网IP

var request = require('request');
var url = 'http://ip.taobao.com/service/getIpInfo.php?ip=myip';
request(url, function(error, response, body) {
    if (!error && response.statusCode == 200) {
        var ip = JSON.parse(body).data.ip;
        console.log(ip);
});

require版本

var http = require('http');

/**
 * 获取本机IP
 * @return {String} 返回本机IP
 */
function getLocalIP() {
    const os = require('os');
    const ifaces = os.networkInterfaces();
    let locatIp = '';
    for (let dev in ifaces) {
        if (dev === '本地连接' || dev === '以太网') {
            for (let j = 0; j < ifaces[dev].length; j++) {
                if (ifaces[dev][j].family === 'IPv4') {
                    locatIp = ifaces[dev][j].address;
                    break;
                }
            }
        }
    }
    return locatIp;
}

/**
 * 获取公网IP
 * @param {Function} fn 异步获取结果后的回调函数
 */
function getPublicIP(fn) {
    http.get('http://ip.taobao.com/service/getIpInfo.php?ip=myip', function(req, res) {
        typeof fn === 'function' && fn(res);
        console.info(res);
    });
}

module.exports = {
    getLocalIP: getLocalIP,
    getPublicIP: getPublicIP
};

ES6版本

import http from 'http';

/**
 * 获取本机IP
 * @return {String} 返回本机IP
 */
export function getLocalIP() {
    const os = require('os');
    const ifaces = os.networkInterfaces();
    let locatIp = '';
    for (let dev in ifaces) {
        if (dev === '本地连接' || dev === '以太网') {
            for (let j = 0; j < ifaces[dev].length; j++) {
                if (ifaces[dev][j].family === 'IPv4') {
                    locatIp = ifaces[dev][j].address;
                    break;
                }
            }
        }
    }
    return locatIp;
}

/**
 * 获取公网IP
 * @param {Function} fn 异步获取结果后的回调函数
 */
export function getPublicIP(fn) {
    http.get('http://ip.taobao.com/service/getIpInfo.php?ip=myip', function(req, res) {
        typeof fn === 'function' && fn(res);
        console.info(res);
    });
}

export default {
    getLocalIP,
    getPublicIP
};

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐