node.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > node.js > nodejs获取当前连接的网络ip

nodejs如何获取当前连接的网络ip

作者:慕水渔

这篇文章主要介绍了nodejs如何获取当前连接的网络ip问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

nodejs获取当前连接的网络ip

获取当前连接ip的方法:

import net from 'net';
function getNetworkIP() {
    return new Promise((resolve,reject)=>{
        let createConnection = net.createConnection;
        var socket = createConnection(80, 'www.***.cn);//进行socket 连接的地址
        socket.on('connect', function() {
            resolve(socket.address().address);
            socket.end();
            socket.destroy();
        });
        socket.on('error', function(e) {
            resolve('');
        });
    })
}

如果想要获取详细信息,可以使用node提供的api或第三方插件获取当前网关列表,然后比对当前连接的ip。

我这里使用systeminformation进行获取:

import si from 'systeminformation';
function getNetwork(){
    return new Promise(async (resolve, reject) => {
        let ip = await getNetworkIP();
        si.networkInterfaces().then(data => {
            data.map((val)=>{
                if(val.ip4==ip){
                    resolve(val);
                }
            })
        }).catch(error => {
            reject();
        });
    })
}

node.js获取用户IP地址

// 获取客户端ip地址
app.get('/ip', function (req, res) {
? var clientIp = getIp(req)
? console.log('客户端ip',clientIp)
? res.json({'youIp':clientIp});
})
//通过req的hearers来获取客户端ip
var getIp = function(req) {
? var ip = req.headers['x-real-ip'] || req.headers['x-forwarded-for'] || req.connection.remoteAddres || req.socket.remoteAddress || '';
? if(ip.split(',').length>0){
? ? ip = ip.split(',')[0];
? }
? return ip;
};

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文