Comment obtenir l'adresse IP de tous les hôtes sur un réseau LAN?
J'ai besoin de la liste des adresses IP de tous les hôtes connectés à mon réseau local.
Quelle est la façon la plus simple de faire cela?
- Définir relié - vous voulez dire, comme actif? Ils sont derrière un pare-feu ou peuvent-ils être l'objet d'un ping?
- Oui, active. Ils peuvent être pare-feu, mais pas nécessairement - je ne sais pas parce que je suis utilisateur non admin.
- Quel est l'environnement c'est dans? Avez-vous géré commutateur de SNMP? Si oui, vous pouvez simplement des requêtes sur l'interrupteur pour voir qui est actif. Si c'est un petit routeur à la maison, vous êtes hors de la chance.
- est droit. La pinte est grand, mais seulement si la machine est configurée pour répondre à la commande ping. SNMP est peut-être la meilleure façon d'obtenir de véritables statistiques.
Vous devez vous connecter pour publier un commentaire.
Que vous aurez à faire un ping sweep. Il y a une table de Ping classe dans le System.Net espace de noms. L'exemple qui suit. Aussi ce n'est possible que si vos ordinateurs ne sont pas équipés de pare-feu en cours d'exécution. Si ils ont un pare-feu activé, il n'y a aucun moyen de déterminer cette information court de faire des requêtes SNMP sur vos commutateurs.
L'autre question est de déterminer la taille de votre réseau. Dans la plupart des situations, votre masque de sous-réseau sera de 24 bits. Cela signifie qu'il est réglé à 255.255.255.0. Si votre passerelle est 192.168.1.1, cela signifie que les adresses valides sur votre réseau sera de 192.168.1.1 à 192.168.1.254. Voici un IP Calculatrice pour vous aider. Vous aurez à parcourir chaque adresse et le ping de l'adresse à l'aide de la commande Ping de classe et de vérifier la PingReply.
Si vous êtes simplement à la recherche de l'information et ne sont pas concernés par la manière dont vous l'obtenez, vous pouvez utiliser NMap. La commande se présente comme suit
EDIT:
Autant que la vitesse augmente, puisque vous êtes sur un réseau local, vous pouvez couper l'intervalle de délai d'attente considérablement vos machines ne devrait pas prendre plus de 100 millisecondes à répondre. Vous pouvez également utiliser SendAsync de ping toutes en même temps. Le programme suivant ping 254 adresse en moins d'une demi-seconde.
EDIT: Après un certain usage de moi-même, j'ai modifié le programme pour la sortie d'un comte de combien d'IPs ont répondu. Il y a un
const
bool que si défini à true, le programme de résoudre les noms d'hôte de l'IPs. Cela ralentit considérablement le scan, si. (moins d'une demi-seconde à 16 secondes) a Également constaté que si l'adresse IP est mal spécifié (fait une faute de frappe moi-même), la réponse de l'objet peut être nulle, de sorte que j'ai manipulé que.Vous serait nécessaire de construire une plage d'adresses (par exemple 192.168.0.1 - 192.168.255.254) et ping chacune de ces adresses. Si une réponse est reçue, alors que l'hôte est actif.
Asynchrone Ping Tutoriel:
http://www.geekpedia.com/tutorial234_Asynchronous-Ping-using-Csharp.html
Cependant, certains systèmes d'exploitation récents bloquer les requêtes ping (ICMP). Cela devra être désactivée dans le pare-feu sur chaque ordinateur pour que vous receviez une réponse.
Vous pourriez ping sur l'adresse de la plage et de la note si un hôte a répondu. Bien sûr, cela nécessitera l'hôte de répondre aux paquets ping.
Vous pouvez le faire dans le code managé. - Je le faire en utilisant le Système.DirectoryServices et System.Net. En gros je obtenir les noms des ordinateurs locaux de DirectoryServices (manipulation des domaines et des groupes de travail comme je l'aller) puis obtenir chaque hôte en adresses IP à partir du Système.Net.Dns. Voici tout emballé dans une pratique de classe...
Puis il suffit d'appeler la méthode statique pour obtenir un tableau de votre réseau local d'ordinateurs...
Au lieu de disposer d'un sauvage de ping-partie, vous pourriez peut-être (je ne sais pas exactement!) utiliser NetBIOS (demande de la netbios nametable en quelque sorte?) http://technet.microsoft.com/en-us/library/cc757216%28WS.10%29.aspx. Ou pourquoi ne pas demander à votre serveur DHCP?
Ping à la diffusion globale de l'adresse ip (192.168.1.255)
Normalement nous aurons la réponse de tout à l'hôte connecté au réseau local.. Ou si vous avez tout particulier de réseau pour le réseau local, de ping à qui des réseaux de diffusion id (j'.e la dernière adresse ip de la gamme ).
Ensuite, vous pouvez connaître toutes les adresses ip connectés à l'hôte dans un réseau local.