Interroger le cache ARP pour obtenir l'ID MAC
J'ai besoin d'obtenir l'adresse MAC ID d'hôte dans mon réseau. Pour que, si je ping de l'IP et de la requête du cache ARP arp -a
je suis en mesure d'obtenir l'ID MAC. Je me demande juste si je peux obtenir une API pour la requête ARP et obtenir l'id MAC.
Aussi, si il y a une meilleure méthode pour obtenir le MAC ID à partir de l'adresse IP, s'il vous plaît suggérer.
P. S: je suis en train de travailler en JAVA.
Grâce.
source d'informationauteur bdhar | 2009-08-06
Vous devez vous connecter pour publier un commentaire.
Java fournit pas de manière directe à la requête de l'adresse MAC de l'hôte de votre réseau, comme c'est disparaît par Java socket bibliothèques.
Dans un sens, c'est logique, car l'adresse MAC de l'hôte dit en réalité que très peu. Il n'y a pas une telle chose comme "la" de l'adresse MAC d'un ordinateur hôte.
Mettre à la fois de l'ensemble de ces questions, et cela signifie qu'un hôte peut avoir de nombreuses adresses MAC différentes (si il y a plus d'une carte réseau), et une adresse MAC peut représenter plusieurs hôtes différents (si le trafic passe par un routeur).
En supposant que vous savez tout cela et vous avez encore besoin d'obtenir l'adresse MAC de l'hôte, la seule façon de le faire en Java, par les "natifs":
system_profile
commande.system_profile
existe sans doute.Vous pouvez obtenir votre propre adresse MAC via:
Il ya certainement aucun moyen que vous pouvez obtenir l'adresse MAC d'un autre hôte via la vanille java. Vous devez utiliser le Processus de l'exécution ou une bibliothèque native de le faire.
Si vous contrôlez les autres machines, vous pouvez laisser une requête de leur propre MAC et de l'envoyer à travers un réseau TCP/IP canal, mais je suppose que c'est pas ce que vous voulez. Pour plus de détails, voir jqno de réponse.
Le cache arp est fournie dans l'ensemble de données SNMP disponibles. Vous pouvez utiliser SNMP4J à écrire un trivial agent d'interroger ces données.
par exemple à partir d'une ligne de commande SNMP outils
(que d'énormes période délimitée par des cordes est l'OID, ou de l'identificateur de l'ARP cache dans SNMP termes. Qui va travailler pour tout SNMP implémentations)
ARP est la correspondance entre les adresses IP à des adresses MAC. C'est la façon dont la pile IP t-il.
Je ne suis pas sûr qu'il y est un portable de façon à obtenir cette information, car il est généralement important pour les développeurs du noyau et les administrateurs système.
De beaucoup de recherche sur le web, il semble qu'il est possible d'obtenir un ARP du routeur table à l'aide de SNMP, mais je n'ai pas trouvé beaucoup d'information particulière sur la façon de le faire. J'ai fait une bibliothèque Java pour SNMP ici. Certains de la spéléologie à travers, il peut s'avérer productive.
Il y a un moyen beaucoup plus simple:
Et vous obtenez le eintire Table ARP de la propriété intellectuelle et HW triés sur chaque ligne.
Ensuite, vous pouvez diviser le tableau en Chaîne séparée des lignes et utiliser des expressions régulières sur chaque ligne pour correspondre à la fois MATÉRIELLE et de son Adresse IP. Et vous avez terminé.
Cela peut ne pas être résolues dans le cadre de Java (parce qu'il est indépendant de la plateforme), mais vous devriez également considérer si oui ou non vous pouvez obtenir les adresses MAC par l'intermédiaire d'un système de service. Il y a probablement des situations où vous ne pouvez pas fiable trouver l'adresse MAC via ARP, ça dépend de pourquoi vous avez besoin de l'adresse MAC.