获取本机ip地址

时间:2020-05-28
本文章向大家介绍获取本机ip地址,主要包括获取本机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 () {});
    }
  
    getIPs(function(ip){
      console.log(ip)
    })

原文地址:https://www.cnblogs.com/zjz666/p/12981124.html