如何以javascript获取连接在同一网络(wifi)中的所有PC的IP地址列表?
使用此代码,我可以找到我的系统的ip,但我想获得网络中连接的设备的所有ip和名称。我不能使用任何服务器端编程语言,比如PHPC,因为我需要在本地操作整个系统。请帮忙如何以javascript获取连接在同一网络(wifi)中的所有PC的IP地址列表?,javascript,networking,Javascript,Networking,使用此代码,我可以找到我的系统的ip,但我想获得网络中连接的设备的所有ip和名称。我不能使用任何服务器端编程语言,比如PHPC,因为我需要在本地操作整个系统。请帮忙 <!doctype html> <html><head> <meta charset="utf-8"> <title>Network IP Address via ipcalf.com</title> </head><body>
<!doctype html>
<html><head>
<meta charset="utf-8">
<title>Network IP Address via ipcalf.com</title>
</head><body>
Your network IP is: <h1 id=list>-</h1> Make the locals proud.
<script>
// NOTE: window.RTCPeerConnection is "not a constructor" in FF22/23
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.";
}
</script>
</body></html>
你不能。这不是一般可用的东西--本地网络上的设备不能保证在网络上进行自我宣传,而且可能根本没有名称——而且浏览器中运行的Javascript肯定无法使用该名称。@ManishSasmal-每个操作系统中都有很多网络工具-请指定您需要该名称的操作系统-尽管在SO中并不是真正的主题,因为现在你只想在你的电脑上运行一个命令computer@ManishSasmal-另一方面,如果您询问如何在浏览器中执行此操作,那么,如上所述,您不能。。。没办法。。。除了浏览器扩展/插件/插件-但鉴于您已经在希望看到其他计算机的位置(LAN),不妨使用操作系统工具,为什么要重新发明轮子-不确定您为什么要在浏览器中看到这一点有许多不同的工具尝试这样做,但是没有人能保证能够实现这一目标,而且有些网络配置是不可能实现的。没有万无一失的方法可以做到这一点,因为网络协议的设计从来没有考虑到这一点。