Comment obtenez-vous l'adresse ethernet à l'aide de Java?
-
09-06-2019 - |
Question
Je voudrais récupérer l'adresse ethernet de l'interface réseau qui est utilisé pour accéder à un site web particulier.
Comment cela peut-il être fait en Java?
Solution Notez que la solution retenue de getHardwareAddress
n'est disponible que dans la version 6 de Java.Il ne semble pas être une solution pour Java 5 de côté à partir de l'exécution de i(f|p)confing.
La solution
java.net.NetworkInterface.getHardwareAddress (ajout de la méthode en Java 6)
Il doit être appelé sur la machine qui vous intéresse dans le MAC n'est pas transféré à travers les frontières du réseau (c'est à direLAN et WAN).Si vous voulez l'utiliser sur un serveur de site web pour interroger les clients, vous devez exécuter une applet qui serait le résultat de nouveau à vous.
Pour Java 5 et plus j'ai trouvé le code l'analyse de la sortie des outils de ligne de commande sur les différents systèmes.
Autres conseils
Vous pouvez obtenir l'adresse qui se connecte à votre ServerSocket à l'aide de http://java.sun.com/javase/6/docs/api/java/net/NetworkInterface.html#getInetAddresses()
Toutefois, si votre client est connecté via un NAT, alors vous obtiendrez l'adresse du routeur et non PAS l'adresse Ethernet.Si c'est sur votre réseau local (via un hub/switch, pas de routeur avec NAT) la il travaillera comme prévu.
En fait, au-delà d'autres bonnes réponses (JDK 6;exec 'ifconfig'), il y a JNI basé sur les bibliothèques. Java Générateur d'Uuid (CRUCHE) 2.0 a code pour certaines plates-formes.Cela fonctionne sur JDK 1.2 et ci-dessus au moins (peut-être de 1,1 même)
Vous pouvez utiliser Jxnet: https://github.com/ardikars/Jxnet (Nécessite la libpcap/winpcap)