Come si ottiene l'indirizzo Ethernet utilizzando Java?
-
09-06-2019 - |
Domanda
Vorrei recuperare l'indirizzo ethernet dell'interfaccia di rete utilizzata per accedere ad un particolare sito web.
Come è possibile farlo in Java?
Soluzione Si noti che la soluzione accettata di getHardwareAddress
è disponibile solo in Java 6.Non sembra esserci una soluzione per Java 5 a parte l'esecuzione di i(f|p)confing.
Soluzione
java.net.NetworkInterface.getHardwareAddress (metodo aggiunto in Java 6)
Deve essere richiamato sulla macchina che ti interessa: il MAC non viene trasferito oltre i confini della rete (ad es.LAN e WAN).Se desideri utilizzarlo su un server di un sito Web per interrogare i client, dovresti eseguire un'applet che ti riporterà il risultato.
Per Java 5 e versioni precedenti ho trovato code analisi dell'output degli strumenti da riga di comando su vari sistemi.
Altri suggerimenti
Puoi ottenere l'indirizzo che si connette al tuo ServerSocket utilizzando http://java.sun.com/javase/6/docs/api/java/net/NetworkInterface.html#getInetAddresses()
Tuttavia, se il tuo client si connette tramite NAT, otterrai l'indirizzo del router e NON l'indirizzo Ethernet.Se è sulla tua rete locale (tramite un hub/switch, nessun router con NAT) funzionerà come previsto.
In realtà, al di là delle altre risposte giuste (JDK 6;exec 'ifconfig'), esistono librerie basate su JNI. Generatore Uuid Java (JUG) 2.0 ha il codice per alcune piattaforme.Funziona almeno su JDK 1.2 e versioni successive (forse anche 1.1)
Puoi usare Jxnet: https://github.com/ardikars/Jxnet (Richiede libpcap/winpcap)