Frage

Ich möchte die Ethernet-Adresse der Netzwerkschnittstelle abrufen, die für den Zugriff auf eine bestimmte Website verwendet wird.

Wie kann das in Java gemacht werden?

Lösung Beachten Sie, dass die akzeptierte Lösung von getHardwareAddress ist nur in Java 6 verfügbar.Abgesehen von der Ausführung von i(f|p)confing scheint es für Java 5 keine Lösung zu geben.

War es hilfreich?

Lösung

java.net.NetworkInterface.getHardwareAddress (Methode in Java 6 hinzugefügt)

Es muss auf dem Rechner aufgerufen werden, an dem Sie interessiert sind – der MAC wird nicht über Netzwerkgrenzen hinweg übertragen (d. h.LAN und WAN).Wenn Sie es auf einem Website-Server nutzen möchten, um die Clients abzufragen, müssen Sie ein Applet ausführen, das Ihnen das Ergebnis zurückmeldet.

Für Java 5 und älter habe ich Code gefunden Analysieren der Ausgabe von Befehlszeilentools auf verschiedenen Systemen.

Andere Tipps

Sie können die Adresse erhalten, die eine Verbindung zu Ihrem ServerSocket herstellt http://java.sun.com/javase/6/docs/api/java/net/NetworkInterface.html#getInetAddresses()

Wenn Ihr Client jedoch eine Verbindung über NAT herstellt, erhalten Sie die Adresse des Routers und NICHT die Ethernet-Adresse.Wenn es sich in Ihrem lokalen Netzwerk befindet (über einen Hub/Switch, kein Router mit NAT), funktioniert es wie vorgesehen.

Eigentlich über andere richtige Antworten hinaus (JDK 6;exec 'ifconfig') gibt es JNI-basierte Bibliotheken. Java UUID Generator (JUG) 2.0 hat Code für einige Plattformen.Dies funktioniert mindestens auf JDK 1.2 und höher (vielleicht sogar 1.1).

Sie können Jxnet verwenden: https://github.com/ardikars/Jxnet (Libpcap/winpcap erforderlich)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top