2010-05-20 4 views
5

Existe-t-il une manière élégante de faire en sorte qu'un programme détecte un nouvel ordinateur connecté au réseau? Je voudrais que mon programme "détecte automatiquement" un nouvel ordinateur étant connecté sur le réseau (ils sont sur le même réseau). Comme un périphérique USB connecté à l'ordinateur.Détection automatique d'un nouvel ordinateur connecté au réseau

Ce que je fais maintenant est de sauvegarder une liste de tous les ordinateurs du réseau de temps en temps. Une autre approche consiste à PING toutes les adresses IP disponibles sur le sous-réseau.

Existe-t-il d'autres approches élégantes?

Merci!

Répondre

4

L'écoute des requêtes ARP est la manière canonique de le faire. Indépendant de DHCP ou non, tout ordinateur connecté qui souhaite communiquer avec le monde extérieur devra faire une requête ARP pour l'adresse du routeur par défaut. Cette requête sera diffusée et contiendra les adresses MAC et IP de l'interface source. Si l'autre ordinateur utilise DHCP, il fera une requête ARP pour sa propre adresse dans le cadre de la détection d'adresse dupliquée, qui est également une émission que vous pouvez surveiller.

(Cela fonctionne plus ou moins de la même façon pour IPv6, sauf que vous devez rechercher des paquets soliciation de découverte de voisin ou d'un routeur à la place.)

Comme la réponse fait allusion, si vous avez un commutateur auquel vous pouvez telnet ou utilisez SNMP, vous pouvez extraire la table MAC. Cela vous donnera une liste d'adresses MAC sur chaque port du commutateur. Si vous voulez les adresses IP cependant, vous devez toujours écouter ARP: s. Par contre, si vous avez accès à la passerelle par défaut sur le réseau, vous pouvez également consulter la table ARP à cet endroit. Cela vous donnera des adresses MAC et IP pour toute personne qui a récemment (pour différentes valeurs de récemment ...) communiqué avec elle.

1

Si vous avez un commutateur géré d'une certaine sorte, vous pouvez probablement vous connecter à cela, ce serait une méthode assez élégante.

Si vous êtes sur un domaine, vous pouvez obtenir une liste de toutes les machines jointes au domaine à partir du contrôleur de domaine. A défaut, tout ce que je peux penser est soit un défi/réponse (par exemple, les ping) ou en détectant le trafic envoyé par eux (voir this question peut-être comme un point de départ?), Ni l'un ni l'autre approche.

+0

L'écoute du trafic DHCP peut être une solution, car elle est toujours diffusée. (DHCP ne peut pas être fait d'une autre manière non plus, la machine à joindre ne sait pas à qui parler ...) –

+0

Je ne comprends pas très bien comment je peux utiliser un commutateur "géré" pour cela. Pouvez-vous expliquer un peu plus loin? – Ian

+0

L'observation du trafic ARP est une autre méthode - elle est également envoyée par diffusion, et la nouvelle machine ne communique pas beaucoup sans envoyer de requêtes ARP. – caf

Questions connexes