首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js获取公网ip 局域网ip

JavaScript 获取公网 IP 和局域网 IP 的方法有所不同,下面分别介绍这两种 IP 的获取方式及其基础概念。

公网 IP

基础概念: 公网 IP 是指能在互联网上直接访问的 IP 地址。每个连接到互联网的设备通常都会有一个公网 IP,这个 IP 是全球唯一的。

获取方法: 可以通过调用第三方 API 来获取当前设备的公网 IP。

示例代码

代码语言:txt
复制
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

基础概念: 局域网 IP 是指在局域网内部使用的 IP 地址,通常是私有 IP 范围内的地址(如 192.168.x.x, 10.x.x.x 等)。

获取方法: 在浏览器环境中,JavaScript 无法直接获取局域网 IP,因为这涉及到网络安全问题。但可以通过 WebRTC 技术间接获取。

示例代码

代码语言:txt
复制
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);
});

优势

  • 可以在不依赖服务器的情况下获取本地 IP。
  • 适用于需要本地网络通信的应用。

应用场景

  • P2P 应用中的本地地址发现。
  • 本地网络服务的配置和管理。

常见问题及解决方法

问题1:为什么获取公网 IP 失败?

  • 可能是因为第三方服务不可用或网络连接问题。
  • 解决方法:尝试更换其他可靠的 IP 查询服务。

问题2:为什么获取局域网 IP 不准确?

  • WebRTC 获取的 IP 可能包括 VPN 或代理服务器的 IP。
  • 解决方法:确保在无代理或 VPN 的环境下测试,或者使用更精确的网络检测方法。

希望以上信息能帮助你理解如何在 JavaScript 中获取公网 IP 和局域网 IP,以及相关的应用场景和可能遇到的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

1分55秒

源站配置-获取回源节点IP

10分14秒

073-使用X-Forwarded-For获取真实ip以及思考

10分22秒

072-使用反向代理后无法获取客户端ip地址

-

【硬件科普】IP地址是什么东西?IPV6和IPV4有什么区别?

7分10秒

腾讯位置 - 服务端IP定位

领券