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

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地址。

  • • php foreach 输出关联数组

    PHP是一种广泛使用的脚本语言,可以用于开发动态网页和Web应用程序。在PHP中,foreach循环是一种非常方便的方式,可以用来遍历数

  • • oracle 39111

    在数据管理软件领域,Oracle是一个备受欢迎的技术选项。而其中的Oracle错误代码39111,常常出现于用户或开发人员在执行操作时,

  • • php foreach三维数组取值

    PHP中使用foreach循环遍历三维数组的方法在PHP中,我们经常会遇到需要遍历三维数组的情况。三维数组是指一个数组中的元素是另一

  • • php foreach创建文件名

    PHP的foreach循环是一种强大的语法结构,它可以用来遍历数组、对象和其他可迭代的数据类型。在实际开发中,我们经常需要使用fore

  • • oracle 3019

    Oracle 3019是一个常见的数据库错误,它通常是由于数据库版本不兼容导致的。具体来说,它指的是在使用某个版本的Oracle数据库时

  • 植物大战僵尸原版电脑下载
    植物大战僵尸1老版本中文版下载
    免费看mv大片的app下载
    google play store最新版本下载
    谷歌商店app下载
    我的VR女友2.0安卓版下载
    囧次元动漫app正版下载
    ehviewer白色版官网入口下载
    gg修改器官网下载
    漫蛙2官方下载
    小雪节气吃什么?小雪节气吃什么传统食物最好
    小雪的古诗词有哪些?小雪的古诗词经典名诗
    小雪是什么意思?小雪是什么意思含义
    小雪节气一般气温多少?小雪节气的天气特点
    小雪三候分别是哪三候?小雪三候指的是什么
    小雪节气有哪些风俗?小雪节气的由来特点及风俗
    2025年中秋节多少号?中秋节一般是农历几月
    2025年中秋节法定假日几天?2025年中秋节放假时间是几号
    2025年中秋节农历几月几日?中秋节一般是几月几日
    2025年中秋节放假几天?2025年中秋节放假安排时间表