Liste die IP-Adresse von allen Computern mit einer einzigen LAN
Schreibe ich ein Programm, mit dem Sie eine Verbindung herstellen, die aus verschiedenen Gründen auf einen anderen Computer in einem LAN. Jedoch, anstatt Sie zur Eingabe der IP-Adresse für mehrere Computer (ein Schmerz in den Hintern), ich Frage mich, ob es ist ein Weg, um die Liste der IP-Adressen aller Rechner in einem LAN. Ich habe recherchiert den ganzen Tag, und haben noch nichts passendes gefunden. Ist das, weil nichts dieser Art vorhanden ist?
Vielen Dank im Voraus.
EDIT: Es würde scheinen, dass mit den vielen Ansichten dieses post bekommen sollte, poste ich meine aktuelle Lösung. Im Allgemeinen Namenskonvention für Computer IP-Adressen in einem LAN sind die gleichen. Beispiel 192.168.2.*, * ersetzt eine beliebige gültige Nummer. Mein Programm erkennt die IP-Adresse, zeigt Sie dem Benutzer, fragt dann die ersten 3 Blöcke der IP. Es dann sequenziell durchsucht bis zu 200 in der gegebenen IP-Namenskonvention, indem Ping und wartet auf eine Antwort. Keine Antwort, kein computer. Es kann alles tun, was Sie tun können, mit einer IP-sobald Sie es weiß, hat ein computer dahinter.
- Könnte man das Subnetz, und Durchlaufen Sie die verfügbaren Adressen zu pingen Sie. Aber das wäre keine Hilfe für diejenigen, die einfach ausgeschaltet. Wenn Sie Zugang hatte, kann man sich bei DHCP-lease-Dateien
ARPing
, wie Sie Jason beschrieben, ist die einzige cross-Plattform-und firewall-vertretbare Lösung. BlueRaja ist WNetEnumResource () - Ansatz ist dann sinnvoll, wenn Sie zu beschränkt sind, um Windows-Kisten. Das scan - /nmap Ansätze haben zu viele Drachen mit host-basierten firewalls. Es ist keine Magische Kugel/API-Aufruf. Die iphelper-API SendARP() ist wahrscheinlich Ihre beste Wette: msdn.microsoft.com/en-us/library/aa366358%28VS.85%29.aspx- Warum nicht 254? (255 in größeren Subnetzen)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bist du nicht wirklich etwas zu finden, zuverlässiger als
ping
ing oderarping
ing Adressen auf die gleiche Teilmenge. Implementiert habe ich dies für eine bestimmte software wieder in den Tag, auf meinem ersten Praktikum und das Letzte mal ich überprüft (um fair zu sein, es war vor einigen Jahren), das ist das, was Sie waren trotzdem Verwendung für diese Funktionalität. Ich nehme das zu bedeuten, dass Sie noch nichts besseres gefunden.Es ist nicht schwer zu finden den Quellcode für diese und übersetzt Sie in C#.
ping
,arping emerged werden
. Alternativ können Sie einfach shell out an einer Eingabeaufforderung und führen Sieping
und dann analysieren Sie die Ergebnisse.System.Net.NetworkInformation.Ping
sollte den trick tun. Keine Notwendigkeit, alles übersetzen aus C.1) Lesen Sie die Subnetz-Maske und berechnen Sie alle IP-Adressen, die Subnetzmaske, die Sie sind in. Dann können Sie entweder Benutzer-ICMP-ping (Standart ping) oder ARP-ping, um eine Liste der gültigen IP-Adressen. ARP-Ping ist viel zuverlässiger, in einen Subnetz-Einstellung.
2) können Sie nmap, um eine Liste der hosts
Jedem host-discovery-tool kann Ihnen dabei helfen. Insbesondere Nmap wird sicherlich geben Sie diese Informationen, obwohl es vielleicht zu viel des guten in dieser situation. Google nach "ping-scan" und man sollte einige nützliche Ergebnisse.
Sehen WNetOpenEnum() und WNetEnumResource(), hier.
Können Sie sich nur die IP und die Subnetz-Maske der Netzwerkkarte und ping jede Adresse? Je nachdem, was diejenigen reagieren kann abgefragt werden, um zu sehen, ob Sie hat, was Sie brauchen, um zu verbinden.