获取本机IP地址[JavaScript / Node.js]


--web客户端JavaScript

<body onload="checkCookie()"></body> 

function getYourIP(){
        
	const RTCPeerConnection = window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection;
        
	if (RTCPeerConnection) (function(){
		const rtc = new RTCPeerConnection({iceServers: []});
                
		if (1 || window.mozRTCPeerConnection){
			rtc.createDataChannel('', {reliable: false});
		}
                
		rtc.onicecandidate = function(evt){
			if (evt.candidate) grepSDP(`a=${evt.candidate.candidate}`);
		};
                
		rtc.createOffer(function(offerDesc){
			grepSDP(offerDesc.sdp);
			rtc.setLocalDescription(offerDesc);
		}, function(e) {
                    console.warn('offer failed', e);
                });
                
		const addrs = Object.create(null);
		addrs['0.0.0.0'] = false;
                
		function updateDisplay(newAddr){
			if (newAddr in addrs) return;
			addrs[newAddr] = true;
			const displayAddrs = Object.keys(addrs).filter(function(k) {return addrs[k];});
			for (let i = 0; i < displayAddrs.length; i++){
				if (displayAddrs[i].length > 16){
					displayAddrs.splice(i, 1);
					i--;
				}
			}
			console.info('您的IP: ', displayAddrs[0]);
		}
                
		function grepSDP(sdp){
			sdp.split('\r\n').forEach(function(line, index, arr){
				if (~line.indexOf('a=candidate')){
					const parts = line.split(' '),
						addr = parts[4],
						type = parts[7];
					if (type === 'host') updateDisplay(addr);
				} else if (~line.indexOf('c=')){
					const parts = line.split(' '),
						addr = parts[2];
					updateDisplay(addr);
				}
			});
		}
	})();
	else {
		console.warn('请使用主流浏览器:chrome,firefox,opera,safari');
	}
}

--web服务端Node.js

const os = require('os');
module.exports ={
	getLocalIP : function(){
		const eth0 = os.networkInterfaces().eth0;
		let localhost = null;
		for (let i = 0; i < eth0.length; i++){
			if (eth0[i].family == 'IPv4'){
				localhost = eth0[i].address;
			}
		}
		return localhost;
	}
};

备注
引用作者的文章
原址


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM