JavaScript 获取公网 IP 和局域网 IP 的方法有所不同,下面分别介绍这两种 IP 的获取方式及其基础概念。
基础概念: 公网 IP 是指能在互联网上直接访问的 IP 地址。每个连接到互联网的设备通常都会有一个公网 IP,这个 IP 是全球唯一的。
获取方法: 可以通过调用第三方 API 来获取当前设备的公网 IP。
示例代码:
fetch('https://api.ipify.org?format=json')
.then(response => response.json())
.then(data => console.log('公网 IP:', data.ip))
.catch(error => console.error('获取公网IP失败:', error));
优势:
应用场景:
基础概念: 局域网 IP 是指在局域网内部使用的 IP 地址,通常是私有 IP 范围内的地址(如 192.168.x.x, 10.x.x.x 等)。
获取方法: 在浏览器环境中,JavaScript 无法直接获取局域网 IP,因为这涉及到网络安全问题。但可以通过 WebRTC 技术间接获取。
示例代码:
function getLocalIPs(callback){
var ips = [];
var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; // 兼容不同浏览器
var pc = new RTCPeerConnection({iceServers:[]});
pc.createDataChannel('');
pc.onicecandidate = function(e){
if (!e.candidate) {
pc.close();
callback(ips);
return;
}
var ip = /^candidate:.+ (\S+) \d+ typ/.exec(e.candidate.candidate)[1];
if (ips.indexOf(ip) == -1){
ips.push(ip);
}
};
pc.createOffer().then(function(sdp){
pc.setLocalDescription(sdp);
}).catch(function(e){
console.error(e);
});
}
getLocalIPs(function(ips){
console.log('局域网 IP:', ips);
});
优势:
应用场景:
问题1:为什么获取公网 IP 失败?
问题2:为什么获取局域网 IP 不准确?
希望以上信息能帮助你理解如何在 JavaScript 中获取公网 IP 和局域网 IP,以及相关的应用场景和可能遇到的问题。
领取专属 10元无门槛券
手把手带您无忧上云