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/