当前位置:网站首页>JS to get the local IP address

JS to get the local IP address

2022-04-23 19:09:00 GIS roast lamb leg is delicious

 getIPs(function(ip){
 })
 
function getIPs(callback){
  var ip_dups = {};

  //compatibility for firefox and chrome
  var RTCPeerConnection = window.RTCPeerConnection
    || window.mozRTCPeerConnection    || window.webkitRTCPeerConnection;
  var mediaConstraints = {
    optional: [{RtpDataChannels: false}]
  };

  //firefox already has a default stun server in about:config
  //  media.peerconnection.default_iceservers =
  //  [{"url": "stun:stun.services.mozilla.com"}]
  var servers = undefined;

  //add same stun server for chrome
  if(window.webkitRTCPeerConnection)
    servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]};

  //construct a new RTCPeerConnection
  var pc = new RTCPeerConnection(servers, mediaConstraints);

  //listen for candidate events
  pc.onicecandidate = function(ice){
    //skip non-candidate events
    if(ice.candidate){

      //match just the IP address
      var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/
      if(ip_regex.exec(ice.candidate.candidate)!=null){
        var ip_addr = ip_regex.exec(ice.candidate.candidate)[1];

        //remove duplicates
        if(ip_dups[ip_addr] === undefined)
          callback(ip_addr);

        ip_dups[ip_addr] = true;
      }

    }
  };

  //create a bogus data channel
  pc.createDataChannel("");

  //create an offer sdp
  pc.createOffer(function(result){

    //trigger the stun server request
    pc.setLocalDescription(result, function(){});

  }, function(){});
}

版权声明
本文为[GIS roast lamb leg is delicious]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204231908120620.html