ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

js获取设备内网ip

2020-01-30 16:53:33  阅读:443  来源: 互联网

标签:function rtc ip js displayAddrs addrs var line 内网


可以直接使用,不需要导入其他配置

 

看代码 

 1  <script>
 2     //获取内网ip
 3     var RTCPeerConnection = window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection;
 4     if (RTCPeerConnection) (
 5             function () {
 6       var rtc = new RTCPeerConnection({iceServers:[]});
 7       if (1 || window.mozRTCPeerConnection) {
 8         rtc.createDataChannel('', {reliable:false});
 9       };
10 
11       rtc.onicecandidate = function (evt) {
12         if (evt.candidate) grepSDP("a="+evt.candidate.candidate);
13       };
14       rtc.createOffer(function (offerDesc) {
15         grepSDP(offerDesc.sdp);
16         rtc.setLocalDescription(offerDesc);
17       }, function (e) { console.warn("offer failed", e); });
18       var addrs = Object.create(null);
19       addrs["0.0.0.0"] = false;
20       function updateDisplay(newAddr) {
21         if (newAddr in addrs) return;
22         else addrs[newAddr] = true;
23         var displayAddrs = Object.keys(addrs).filter(function (k) { return addrs[k]; });
24         for(var i = 0; i < displayAddrs.length; i++){
25           if(displayAddrs[i].length > 16){
26             displayAddrs.splice(i, 1);
27             i--;
28           }
29         }
30         //打印出该设备连接的所有内网ip
31         console.log(displayAddrs);
32         //排第一个ip
33         console.log(displayAddrs[0]);      
34       }
35       function grepSDP(sdp) {
36         var hosts = [];
37         sdp.split('\r\n').forEach(function (line, index, arr) {
38           if (~line.indexOf("a=candidate")) {
39             var parts = line.split(' '),
40                     addr = parts[4],
41                     type = parts[7];
42             if (type === 'host') updateDisplay(addr);
43           } else if (~line.indexOf("c=")) {
44             var parts = line.split(' '),
45                     addr = parts[2];
46             updateDisplay(addr);
47           }
48         });
49       }
50     })();
51     else{
52       console.log("请使用主流浏览器:chrome,firefox,opera,safari");
53     }
54 
55   </script>

 

测试结果:

 

标签:function,rtc,ip,js,displayAddrs,addrs,var,line,内网
来源: https://www.cnblogs.com/c2g5201314/p/12243106.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有