Indiquez l'Adresse IP de tous les ordinateurs connectés à un réseau local unique
Je suis en train d'écrire un programme où vous vous connectez, pour diverses raisons, à d'autres ordinateurs sur un réseau local. Cependant, plutôt que d'avoir à saisir l'adresse IP pour plusieurs ordinateurs (une douleur dans le cul), je me demandais si il existe un moyen de lister les adresses IP de tous les ordinateurs dans un réseau local. J'ai fait des recherches toute la journée, et encore n'ai rien trouvé de convenable. Est-ce parce que rien de ce genre existe?
Je vous remercie à l'avance.
EDIT: Il semblerait qu'avec le nombre de vues à ce post, je dois poster ma solution réelle. En général, les conventions de nommage pour les ordinateurs adresses IP sur un LAN sont les mêmes. par exemple 192.168.2.*, * être remplacé par n'importe quel nombre valide. Mon programme détecte l'adresse IP, l'affiche à l'utilisateur, puis demande le premier à 3 pâtés de maisons de la propriété intellectuelle. Il a ensuite séquentiellement numérise jusqu'à 200 à l'IP donnée convention de nommage par la commande ping et en attente d'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 elle.
ARPing
, comme Jason décrit, est le seul multi-plateforme et un pare-feu solution défendable. BlueRaja de WNetEnumResource() est raisonnable si vous êtes limité à Windows boxen. La numérisation/nmap approches ont trop de dragons à partir de l'hôte de pare-feu. Il n'y a pas une solution magique/appel d'API. Le iphelper de l'API de SendARP() est probablement votre meilleur pari: msdn.microsoft.com/en-us/library/aa366358%28VS.85%29.aspxPourquoi ne pas 254? (255 dans les grandes sous-réseaux)
OriginalL'auteur Bloodyaugust | 2010-01-03
Vous devez vous connecter pour publier un commentaire.
Vous n'êtes pas vraiment à trouver quelque chose de plus fiable que
ping
ing ouarping
ing adresses sur le même sous-ensemble. J'ai mis en œuvre ce pour un certain morceau de logiciel retour dans la journée sur mon premier stage et, la dernière fois que j'ai vérifié (pour être honnête, c'était il y a plusieurs années), c'est ce qu'ils étaient toujours à l'aide de cette fonctionnalité. Je prends ça pour dire qu'ils n'ont rien trouvé de mieux.Il n'est pas difficile de trouver le code source de ces et de les traduire en C#.
ping
,mise en place d'arp
. Alternativement, vous venez de shell à une invite de commande et exécutezping
et ensuite d'analyser les résultats.System.Net.NetworkInformation.Ping
devrait faire l'affaire. Pas besoin de traduire quelque chose de C.OriginalL'auteur jason
1) Lire le masque de sous-réseau et le calcul de toutes les adresses IP du masque de sous-réseau vous sont dans. Ensuite, vous pouvez soit l'utilisateur ping ICMP (ping standard) ou ARP ping à la liste de toutes les adresses IP valides. ARP Ping est beaucoup plus fiable dans un sous-réseau de réglage.
2) Vous pouvez nmap à la liste de tous les hôtes
OriginalL'auteur Chandra Patni
Tout la découverte de l'hôte outil peut vous aider ici. En particulier Nmap sera certainement vous donner cette information, bien qu'il pourrait être exagéré dans cette situation. Google pour "ping scan" et vous devriez obtenir quelques résultats utiles.
OriginalL'auteur ennuikiller
Voir WNetOpenEnum() et WNetEnumResource(), ici.
OriginalL'auteur BlueRaja - Danny Pflughoeft
Pouvez-vous il suffit de regarder l'adresse IP et le masque de sous-réseau sur la carte réseau et une table de ping toutes les adresses? Les pistes de répondre peut être interrogé pour voir si il a ce dont vous avez besoin pour vous connecter.
OriginalL'auteur SqlRyan