获取本机IP地址是Web开发中常用的一个操作,可以方便地判断用户所在的网络环境。本文将详细讲解如何在JavaScript和Node.js中获取本机IP地址,并提供两个示例说明。
JavaScript获取本机IP地址
在JavaScript中获取本机IP地址可以通过以下方法实现:
//获取本机IP地址
function getLocalIP() {
return new Promise(resolve => {
window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
const rtc = new RTCPeerConnection({iceServers:[]});
rtc.createDataChannel('', {reliable:false});
rtc.onicecandidate = evt => {if (evt.candidate) grepSDP(evt.candidate.candidate);};
rtc.createOffer(sdp => {
sdp.sdp.split('\n').forEach(line => {if (line.indexOf('candidate') !== -1) grepSDP(line);});
rtc.setLocalDescription(sdp);
}, e => {console.error(e);});
function grepSDP(sdp) {
const reg = /([0-9]{1,3}(\.[0-9]{1,3}){3})/;
const match = sdp.match(reg);
if (match) resolve(match[1]);
}
});
}
getLocalIP().then(console.log);
其中,通过创建一个RTCPeerConnection实例,使得浏览器能够通过ICE Candidate机制获取到本机IP地址。上述代码中的getLocalIP()函数返回一个Promise对象,调用then()方法即可获取到IP地址。
以下是一个简单的示例,通过在页面中输出IP地址来展示上述代码的效果:
<!DOCTYPE html>
<html>
<head>
<title>Show local IP address</title>
<script>
//函数定义和调用
</script>
</head>
<body>
<h1>Your local IP address is:</h1>
<pre id="local-ip"></pre>
</body>
</html>
Node.js获取本机IP地址
在Node.js中获取本机IP地址可以通过以下方法实现:
//获取IP地址
const os = require('os');
function getLocalIP() {
const interfaces = os.networkInterfaces();
const addresses = [];
for (const iface of Object.values(interfaces)) {
for (const addr of iface) {
if (addr.family === 'IPv4' && !addr.internal) {
addresses.push(addr.address);
}
}
}
return addresses;
}
console.log(getLocalIP());
通过调用os.networkInterfaces()函数获取所有网络接口的信息,进而得到本机IP地址。上述代码返回一个IP地址数组。
以下是一个简单的示例,通过在控制台中输出IP地址数组来展示上述代码的效果:
//调用函数
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:获取本机IP地址的实例(JavaScript / Node.js) - Python技术站