js获取设备内网ip

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

看代码

 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>

测试结果:

原文地址:https://www.cnblogs.com/c2g5201314/p/12243106.html

时间: 2024-11-06 07:38:00

js获取设备内网ip的相关文章

通过js获取计算机内网ip,计算机名,mac地址

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <meta http-equiv="

php获取真实内网IP方法

function getIP() { if (isset($_SERVER)) { if (isset($_SERVER["HTTP_CDN_SRC_IP"])) { $realip = $_SERVER["HTTP_CDN_SRC_IP"]; } else if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $realip = $_SERVER['HTTP_X_FORWARDED_FOR']; } elseif (isse

获取本机外网ip和内网ip

获取本机外网ip 1 //获取本机的公网IP 2 public static string GetIP() 3 { 4 string tempip = ""; 5 try 6 { 7 WebRequest request = WebRequest.Create("http://ip.qq.com/"); 8 request.Timeout = 10000; 9 WebResponse response = request.GetResponse(); 10 Stre

nodejs中获取内网ip地址

今天同事有个需求,希望用nodejs里的web服务器的对应的站点可以支持内网访问,后来发现修改express里的hostname属性为自己的内网ip就可以了.但是问题是,我们的机器都是自动获取内网ip,那么这次写死的hostname下次基本上就不能用了,于是我们想到了在nodejs里动态获取内网ip,并且把值赋给express的open方法就可以了,于是我按照这个思路开工了. 我们先了解怎么获取内网ip,网上的通用方法我试了下,在我机器里是无效的,调试了下才发现了它这个不是完全通用的,于是我针对

根据Request获取客户端IP 内网IP及外网IP

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr() ,这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了.如果使用了反向代理软件,将http://192.168.1.110:2046/ 的URL反向代理为http://www.xxx.com/ 的URL时,用request.getRemoteAddr() 方法获取的IP地址是:127.0.0.1 或 192.168.1.110 ,而并不是客户

vue实现获取内网ip和外网ip

1.内网IP 注意:有的浏览器获取到的是IPv4地址,有的是IPv6地址 <template> <section class="p-10"> <h1>{{ ip }}</h1> </section> </template> <script> export default { data() { return { ip: '' }; }, methods: { getUserIP(onNewIP) { le

Python获取内网IP

Python 获取本机内网IP 本文记录使用Python获取本机IP的两种方法. 通过hostname来获取本机IP import socket print(socket.gethostbyname(socket.gethostname())) 此方法是先获取hostname,然后在通过hostname来查看本机的IP.不推荐此方法,因为若是在/etc/hosts中将hostnam设置为127.0.0.1,那么获取到的就是127.0.0.1,而非本机的真实IP. 通过UDP获取本机IP impo

公网IP与内网IP,私家车与公交车,两者体验大不同!

“提速降费”已经喊了很多年,很多用户家里都升级安装了百兆甚至千兆宽带,再也不会出现一人看电影,全家缓冲的情况了. 但大家都知道,每个宽带账号都会分配一个公网IP地址.公网IP地址不是无限的,宽带发展到今天,公网IP地址也已逐渐告罄.于是,近几天很多网民都在抱怨:“自家的公网IP,被偷偷换为内网IP”. 公网IP和内网IP的使用体验有哪些不同?如何获得公网IP? 路由器只需一个公网IP就可以供下面多个电脑联网使用.由于不同的内网IP能够重复使用.所以内网IP通常有以下类型:10.0.0.0~10.

如何判断自己IP是内网IP还是外网IP

tcp/ip协议中,专门保留了三个IP地址区域作为私有地址,其地址范围如下: 10.0.0.0/8:10.0.0.0-10.255.255.255  172.16.0.0/12:172.16.0.0-172.31.255.255  192.168.0.0/16:192.168.0.0-192.168.255.255 使用保留地址的网络只能在内部进行通信,而不能与其他网络互连.如果要与外部通信,那么必须通过网关与外部通信,这里使用了NAT, NAPT技术就是用来保证通信的代理机制. 另外,一些宽带