electron js获取内网IP地址的方法

方法一: 不引入依赖(引用自 https://www.cnblogs.com/c2g5201314/p/12243106.html)

    getUserIP() {
      var RTCPeerConnection = window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection
      if (RTCPeerConnection) {
        (
          function() {
            var 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) })
            var addrs = Object.create(null)
            addrs['0.0.0.0'] = false
            function updateDisplay(newAddr) {
              if (newAddr in addrs) return
              else addrs[newAddr] = true
              var displayAddrs = Object.keys(addrs).filter(function(k) { return addrs[k] })
              for (var i = 0; i < displayAddrs.length; i++) {
                if (displayAddrs[i].length > 16) {
                  displayAddrs.splice(i, 1)
                  i--
                }
              }
              // 打印出该设备连接的所有内网ip
              console.log(displayAddrs)
              // 排第一个ip
              console.log(displayAddrs[0])
            }
            function grepSDP(sdp) {
              var hosts = []
              sdp.split('\r\n').forEach(function(line, index, arr) {
                if (~line.indexOf('a=candidate')) {
                  const parts = line.split(' ')
                  const addr = parts[4]
                  const type = parts[7]
                  if (type === 'host') updateDisplay(addr)
                } else if (~line.indexOf('c=')) {
                  const parts = line.split(' ')
                  const addr = parts[2]
                  updateDisplay(addr)
                }
              })
            }
          })()
      } else {
        console.log('请使用主流浏览器:chrome,firefox,opera,safari')
      }
    }

方法二: 引入ip 依赖
先 npm install ip

import IP from 'ip'
console.log(IP.address())

我这边在测试中 使用浏览器时方法一为undefined,方法二为:127.0.0.1
使用electron时都返回了正确的内网IP地址
原因未知

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值