獲取本機(jī)IP地址的實(shí)例(JavaScript / Node.js)
--web 客戶端JavaScript
<!-- 調(diào)用方式 --> <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服務(wù)端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; }, };
以上這篇獲取本機(jī)IP地址的實(shí)例(JavaScript / Node.js)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
原生js基于canvas實(shí)現(xiàn)一個(gè)簡單的前端截圖工具代碼實(shí)例
這篇文章主要介紹了原生js基于canvas實(shí)現(xiàn)一個(gè)簡單的前端截圖工具代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09JavaScript實(shí)現(xiàn)同步于本地時(shí)間的動(dòng)態(tài)時(shí)間顯示方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)同步于本地時(shí)間的動(dòng)態(tài)時(shí)間顯示方法,實(shí)例分析了javascript獲取本地時(shí)間及動(dòng)態(tài)顯示的技巧,并對實(shí)現(xiàn)代碼進(jìn)行了較為詳盡的分析說明,需要的朋友可以參考下2015-02-02layui radio點(diǎn)擊事件實(shí)現(xiàn)input顯示和隱藏的例子
今天小編就為大家分享一篇layui radio點(diǎn)擊事件實(shí)現(xiàn)input顯示和隱藏的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09js實(shí)現(xiàn)鼠標(biāo)左右移動(dòng),圖片也跟著移動(dòng)效果
本文主要介紹了js實(shí)現(xiàn)鼠標(biāo)左右移動(dòng),圖片也跟著移動(dòng)效果的方法與思路。具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-01-01詳解Html a標(biāo)簽中href和onclick用法、區(qū)別、優(yōu)先級別
本文主要分享一篇關(guān)于Html A標(biāo)簽中href和onclick用法、區(qū)別、優(yōu)先級別,具有很好的參考價(jià)值,有需要了解的朋友可以看看2017-01-01BootStrap框架個(gè)人總結(jié)(bootstrap框架、導(dǎo)航條、下拉菜單、輪播廣告carousel、柵格系統(tǒng)布局、標(biāo)簽頁
這篇文章主要介紹了BootStrap框架個(gè)人總結(jié)(bootstrap框架、導(dǎo)航條、下拉菜單、輪播廣告carousel、柵格系統(tǒng)布局、標(biāo)簽頁tabs、模態(tài)框、菜單定位)的相關(guān)資料,需要的朋友可以參考下2016-12-12js實(shí)現(xiàn)簡單的省市縣三級聯(lián)動(dòng)效果實(shí)例
這篇文章主要介紹了js實(shí)現(xiàn)簡單的省市縣三級聯(lián)動(dòng)效果,以完整實(shí)例形式分析了JavaScript實(shí)現(xiàn)省市縣三級聯(lián)動(dòng)效果的具體步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-02-02JavaScript中的各種寬高屬性的實(shí)現(xiàn)
這篇文章主要介紹了JavaScript中的各種寬高屬性的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05