js如何获取本地iPv4的地址

JavaScript013

js如何获取本地iPv4的地址,第1张

var RTCPeerConnection = /*window.RTCPeerConnection ||*/ window.webkitRTCPeerConnection || window.mozRTCPeerConnection

if (RTCPeerConnection) (function () {

    var rtc = new RTCPeerConnection({iceServers:[]})

    if (1 || window.mozRTCPeerConnection) {      // FF [and now Chrome!] needs a channel/stream to proceed

        rtc.createDataChannel('', {reliable:false})

    }

    

    rtc.onicecandidate = function (evt) {

        // convert the candidate to SDP so we can run it through our general parser

        // see https://twitter.com/lancestout/status/525796175425720320 for details

        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] })

        document.getElementById('list').textContent = displayAddrs.join(" or perhaps ") || "n/a"

    }

    

    function grepSDP(sdp) {

        var hosts = []

        sdp.split('\r\n').forEach(function (line) { // c.f. http://tools.ietf.org/html/rfc4566#page-39

            if (~line.indexOf("a=candidate")) {     // http://tools.ietf.org/html/rfc4566#section-5.13

                var parts = line.split(' '),        // http://tools.ietf.org/html/rfc5245#section-15.1

                    addr = parts[4],

                    type = parts[7]

                if (type === 'host') updateDisplay(addr)

            } else if (~line.indexOf("c=")) {       // http://tools.ietf.org/html/rfc4566#section-5.7

                var parts = line.split(' '),

                    addr = parts[2]

                updateDisplay(addr)

            }

        })

    }

})() else {

    document.getElementById('list').innerHTML = "<code>ifconfig | grep inet | grep -v inet6 | cut -d\" \" -f2 | tail -n1</code>"

    document.getElementById('list').nextSibling.textContent = "In Chrome and Firefox your IP should display automatically, by the power of WebRTCskull."

} <h1 id="list"></h1>

如果你打算自己写,估计难度太大了,你可以引用现有一些公司已经实现的js来获取,详见其他网友的贡献:

http://jingyan.baidu.com/article/cbcede0735d4e502f50b4d58.html

http://www.jb51.net/article/52484.htm

我试了第一片文章,是可以的。

当然你也可以谷歌、百度一下,不用光在这里发问,嘿嘿。希望能帮到你。

在mac上获取本地IP地址

查看文本打印?

var os = require('os')

var IPv4,hostName

hostName=os.hostname()

for(var i=0i<os.networkInterfaces().en0.lengthi++){

if(os.networkInterfaces().en0[i].family=='IPv4'){

IPv4=os.networkInterfaces().en0[i].address

}

}

console.log('----------local IP: '+IPv4)

console.log('----------local host: '+hostName)

在ubuntu server上获取本地IP地址

查看文本打印?

var os = require('os')

var IPv4,hostName

hostName=os.hostname()

for(var i=0i<os.networkInterfaces().eth0.lengthi++){

if(os.networkInterfaces().eth0[i].family=='IPv4'){

IPv4=os.networkInterfaces().eth0[i].address

}

}

console.log('----------local IP: '+IPv4)

console.log('----------local host: '+hostName)

参考:http://blog.csdn.net/fifaquake/article/details/7532145

http://nodejs.org/api/os.html#os_os_networkinterfaces

查看本机外网IP,可以访问一下几个网站:

http://www.net.cn/static/customercare/yourIP.asp

http://www.ip138.com/

http://www.viewip.info/

http://www.123cha.com/

http://tool.chinaz.com/Ip/