2016-08-13 14 views
-1

このコードを使用して私は私のシステムのipを見つけることができますが、私はすべてのipとネ​​ットワークのデバイスの名前を取得したいです。私は、ローカルの完全なシステムを操作する必要があるので、PHP C#のような任意のサーバー側プログラミング言語を使用することはできません。助けてください。javascriptで同じネットワーク(無線LAN)に接続されているすべてのPCのIPアドレス一覧を取得するには?

<!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> 
+0

これを実行しようとするツールはたくさんありますが、それを達成できることは保証されていないし、不可能なネットワーク構成もあります。ネットワークプロトコルがこれを念頭に置いて設計されていないため、これを行うための確実な方法はありません。 –

答えて

1

できません。これは一般的に利用可能なものではありません。ローカルネットワーク上のデバイスは、ネットワーク上で自分自身を宣伝することは保証されておらず、全く名前がないかもしれません。ブラウザで動作するJavascriptでは利用できません。

+0

ok ...これを取得する方法はありますか?はい、助けてください。 –

+0

@ManishSasmal - 各オペレーティングシステムには多くのネットワークツールがあります。必要なオペレーティングシステムを指定してください。あなたのコンピュータ上でコマンドを実行したいからです。 –

+0

@ManishSasmal - もしあなたがブラウザでそれをやる方法を尋ねているのであれば、あなたは...できませんその周辺に...ブラウザ拡張/プラグイン/アドオンを除いて - あなたが既に他のコンピュータを見たい場所(LAN)にいるのを見て、OSツールを使用するだけで、なぜあなたのブラウザでこれを見たいと思う理由がわからない –

関連する問題