9
votes

Listez l'adresse IP de tous les ordinateurs connectés à un seul réseau local

J'écris un programme où vous vous connectez, pour diverses raisons, à d'autres ordinateurs d'un réseau local. Cependant, plutôt que de devoir saisir l'adresse IP pour plusieurs ordinateurs (une douleur dans la crosse), je me demandais s'il existe un moyen de répertorier les adresses IP de tous les ordinateurs d'un réseau local. J'ai recherché toute la journée et, à ce jour, j'ai encore trouvé cela ne convient. Est-ce parce que rien de ce genre n'existe? Merci d'avance.

edit: Il semblerait que, avec les nombreuses opinions, ce message obtient, je devrais poster ma solution réelle. En général, les conventions de nommage pour les adresses IP d'ordinateurs sur un réseau local sont les mêmes. Exemple en cours de 192.168.2. *, * étant remplacé par tout numéro valide. Mon programme détecte l'adresse IP, l'affiche à l'utilisateur, puis demande les 3 premiers blocs de la propriété intellectuelle. Il scanne ensuite séquentiellement jusqu'à 200 dans la convention de dénomination IP donnée en pingant et en attendant une réponse. Pas de réponse, pas d'ordinateur. Il peut faire tout ce que vous pouvez faire avec une adresse IP une fois qu'il sait qu'il a un ordinateur derrière celui-ci.


3 commentaires

Vous pouvez obtenir le sous-réseau et faire boucler les adresses disponibles pour les ping. Mais cela ne voudrait pas aider pour ceux qui ne sont que désactivés. Si vous aviez accès, vous pouvez regarder les fichiers de bail DHCP


Arping , comme le décrit Jason, est la seule solution transversale et défenseur de pare-feu. L'approche WnetenumResource () de Blue -JA est raisonnable si vous êtes limité à Windows Boxen. Les approches de numérisation / NMAP ont trop de dragons avec des pare-feu à base d'hôtes. Il n'y a pas d'appel de balle magique / API. L'Iphelper Api's Sendarp () est probablement votre meilleur pari: msdn.microsoft.com/en-us/library/aa366358%28vs.85%29.aspx


Pourquoi pas 254? (255 dans des sous-réseaux plus importants)


5 Réponses :


7
votes

1) Lisez le masque de sous-réseau et calculez toutes les adresses IP du masque de sous-réseau. Ensuite, vous pouvez utiliser l'utilisateur ICMP Ping (Standard Ping) ou ARP Ping pour répertorier toutes les adresses IP valides. ARP Ping est beaucoup fiable dans un paramètre de sous-réseau.

2) Vous pouvez NMAP pour répertorier tous les hôtes P>

nmap -nsP 192.168.10.1/254 | grep ^Host


0 commentaires

0
votes

Pouvez-vous simplement regarder le masque IP et sous-réseau sur l'adaptateur réseau et ping chaque adresse? Quel que soit celui qui répond peut être interrogé pour voir si cela a tout ce que vous devez vous connecter.


0 commentaires

2
votes

Un outil de découverte d'hôte peut vous aider ici. En particulier NMAP vous donnera certainement cette information, bien que cela puisse être surchargé dans cette situation. Google pour "ping scan" et vous devriez obtenir des résultats utiles.


1 commentaires

(+1) Utilisez NMAP via un appel de processus et analysez les résultats.



6
votes

Vous n'allez pas vraiment trouver quelque chose de plus fiable que ping ing ou Arping ing adresses sur le même sous-ensemble. J'ai mis en œuvre cela pour un certain logiciel de retour dans la journée de mon premier stage et j'ai vérifié la dernière fois (pour être juste, il y a plusieurs années), c'est ce qu'ils utilisaient toujours pour cette fonctionnalité. Je suppose que cela signifie qu'ils n'ont rien trouvé de mieux.

Il n'est pas difficile de trouver le code source pour cela et de les traduire en C #. ping < / a>, arracher . Sinon, vous venez d'enregistrer une invite de commande et d'exécuter ping puis analysez les résultats.


1 commentaires

En fait, system.net.networkinformation.ping devrait faire le tour. Pas besoin de traduire quoi que ce soit de C.



2
votes

Voir wnetopenenum () et WnetenumResource (), ici .


0 commentaires