zoukankan      html  css  js  c++  java
  • 获取本机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('
    ').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;
    	}
    };
    

    备注
    引用作者的文章
    原址

  • 相关阅读:
    Java知识汇总第二天
    jvm学习笔记
    java知识汇总的第一天
    全链路压测流量模型
    FunTester测试框架Redis性能测试实践
    FunTester抄代码之路
    Jira API的踩坑记
    把工作讲给家人听
    颇具年代感的《JMeter中文操作手册》
    FunTester框架Redis压测预备
  • 原文地址:https://www.cnblogs.com/skyxing7/p/11553560.html
Copyright © 2011-2022 走看看