h5页面获取当前用户连接wifi的ip地址_tcp/ip协议

let RTCPeerConnection =
        window.RTCPeerConnection ||
        window.webkitRTCPeerConnection ||
        window.mozRTCPeerConnection;
      let _this = this;
      if (RTCPeerConnection)
        (function () {
          let rtc = new RTCPeerConnection({ iceServers: [] });
          if (1 || window.mozRTCPeerConnection) {
            rtc.createDataChannel("", { reliable: false });
          }
          rtc.onicecandidate = function (evt) {
            if (evt.candidate) grepSDP("a=" + evt.candidate.candidate);
          };
          rtc.createOffer(
            function (offerDesc) {
              grepSDP(offerDesc.sdp);
              rtc.setLocalDescription(offerDesc);
            },
            function (e) {
              console.warn("offer failed", e);
            }
          );

          let addrs = Object.create(null);
          addrs["0.0.0.0"] = false;
          function updateDisplay(newAddr) {
            if (newAddr in addrs) return;
            else addrs[newAddr] = true;
            let displayAddrs = Object.keys(addrs).filter(function (k) {
              return addrs[k];
            });
            for (let i = 0; i < displayAddrs.length; i++) {
              if (displayAddrs[i].length > 16) {
                displayAddrs.splice(i, 1);
                i--;
              }
            }
            // alert(displayAddrs[0],'120');//打印出内网ip
            _this.ipName = displayAddrs[0];
            _this.changeColor(_this.ipName);
          }
          function grepSDP(sdp) {
            let hosts = [];
            sdp.split("\r\n").forEach(function (line, index, arr) {
              if (~line.indexOf("a=candidate")) {
                let parts = line.split(" "),
                  addr = parts[4],
                  type = parts[7];
                if (type === "host") {
                  updateDisplay(addr);
                }
              } else if (~line.indexOf("c=")) {
                let parts = line.split(" "),
                  addr = parts[2];
                updateDisplay(addr);
              }
            });
          }
        })();
      else {
        console.log("请使用主流浏览器:chrome,firefox,opera,safari");
      }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值