当前位置: 首页 » 网络知识 » 建站知识 » 正文

javascript 获取局域网ip

发布时间:2025-01-18 以下文章来源于网友投稿,内容仅供参考!

作为Web开发领域的大佬,javascript可以说是无所不能。js在我们日常开发中的作用非常广泛,在获取浏览器信息,提交表单,验证用户信息等方面都能够起到至关重要的作用。而今天我们所要介绍的内容也和js关系很大,那就是获取局域网ip。

首先先解释一下什么是局域网ip。ip地址是用于标记网络设备的地址,而局域网ip是指在局域网内使用的ip地址。那么我们为什么要获取局域网ip呢?举个栗子,比如说我们在公司内部开发一些系统,此时我们需要知道我们机器的ip地址来方便进行本地测试和调试。

获取局域网ip有很多种方法,这里我们主要介绍三种:

方法一:通过使用WebRTC API

var pc = new RTCPeerConnection();pc.createDataChannel("");pc.createOffer(function (offer) {console.log(offer.sdp);pc.setLocalDescription(offer);}, function (err) {console.error(err);});pc.onicecandidate = function (event) {if (event.candidate) {console.log(event.candidate.candidate.match(/(192|172|10)[^/]*//)[0]);pc.onicecandidate = function () {};}};

方法二:通过访问外部服务

var send = new XMLHttpRequest();send.onreadystatechange = function () {if (this.readyState == 4 && this.status == 200) {console.log(this.responseText);}};send.open("GET", "ipv4.myexternalip/json", true);send.send();

方法三:通过DNS解析

var ips = [];var RTCPeerConnection = window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection;var useWebKit = !!window.webkitRTCPeerConnection;var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') >-1;var pc = new RTCPeerConnection({iceServers: []});function grepSDP(sdp) {var hosts = [];sdp.split('\r\n').forEach(function (line, index, arr) {if (~line.indexOf("a=candidate")) {var parts = line.split(' '),addr = parts[4],type = parts[7];if (type === 'host') {ips.push(addr);}} else if (~line.indexOf("c=")) {var parts = line.split(' '),addr = parts[2];ips.push(addr);}});}if (isFirefox) {pc.createDataChannel('', {reliable: false});};pc.onicecandidate = function (ice) {if (!ice || !ice.candidate || !ice.candidate.candidate || !~ice.candidate.candidate.indexOf('srflx') || ~ice.candidate.candidate.indexOf('srflx' && 'host')) {return;}grepSDP(ice.candidate.candidate);};pc.createOffer(function (offerDesc) {grepSDP(offerDesc.sdp);pc.setLocalDescription(offerDesc);}, function (e) {console.warn("offer failed", e);});setTimeout(function () {console.log(ips);}, 1000);

至此,我们介绍了三种获取局域网ip的方法,每种方法都有各自的优缺点。其中第二种方法最为简单易懂,但是需要访问外部服务;第一种方法通过WebRTC来实现,如果机器不支持WebRTC,则获取不到ip;第三种方法比较复杂,但是可以获取准确的ip地址,同时还可以获取所有的ip地址。

  • • oracle 11g bbed

    在数据库管理中,数据的完整性和安全性是最重要的,而oracle 11g bbed(Block Browser and Editor)就是一款专业的数据块查看和

  • • javascript 继承的好处

    JavaScript 继承是一种非常重要的特性,它允许我们创建一种对象,这种对象可以继承其他的对象的属性和方法。JavaScript 继承是很

  • • php nav

    在网页设计中,导航栏是至关重要的元素之一,因为它是用户从一个页面导航到另一个页面的主要方式。而PHP nav则是一种使用PHP代码

  • • macos beta检查正式版

    最近,很多人都对 macOS beta 版进行了试验,并且遇到了各种问题。然而,我们发现在正式版本中,这些问题已经被解决了。因此,我

  • • css增加class属性值

    在CSS中,class属性可以用于为HTML元素添加样式。如果我们想在某个元素上添加一个新的样式,可以使用增加class属性值的方法。这

  • 中国人民银行汇率查询
    银联汇率
    360文库
    腾讯广告推广平台入口
    360移动开放平台
    360广告投放平台
    360广告联盟平台官网
    京东联盟官网登录入口
    微盟官网
    阿里妈妈官网
    首都之窗网站:http://www.beijing.gov.cn
    北京人民政府网站:www.beijing.gov.cn
    国家互联网信息办公室网站:http://www.scio.gov.cn
    全国人社政务服务平台:http://www.12333.gov.cn
    中央人民政府门户网站:www.gov.cn
    沈阳政务服务平台:http://zwfw.shenyang.gov.cn
    广东省公共机构能源资源消费统计工作指南
    黑龙江政务服务平台:http://zwfw.hlj.gov.cn
    公共机构能源资源消费统计系统:http://nyzyxftj.ggj.gov.cn
    国家能源局网站:http://www.nea.gov.cn