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.

È stato utile?

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)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top