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