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;
};总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
