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.

Était-ce utile?

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)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top