Pregunta

Me gustaría recuperar la dirección Ethernet de la interfaz de red que se utiliza para acceder a un sitio web en particular.

¿Cómo se puede hacer esto en Java?

Solución Tenga en cuenta que la solución aceptada de getHardwareAddress sólo está disponible en Java 6.No parece haber una solución para Java 5 aparte de ejecutar i(f|p)confing.

¿Fue útil?

Solución

java.net.NetworkInterface.getHardwareAddress (método agregado en Java 6)

Debe llamarse en la máquina que le interesa: la MAC no se transfiere a través de los límites de la red (es decir,LAN y WAN).Si desea utilizarlo en un servidor de sitio web para interrogar a los clientes, deberá ejecutar un subprograma que le informará el resultado.

Para Java 5 y versiones anteriores encontré código análisis de la salida de herramientas de línea de comandos en varios sistemas.

Otros consejos

Puede obtener la dirección que se conecta a su ServerSocket usando http://java.sun.com/javase/6/docs/api/java/net/NetworkInterface.html#getInetAddresses()

Sin embargo, si su cliente se conecta a través de NAT, obtendrá la dirección del enrutador y NO la dirección Ethernet.Si está en su red local (a través de un concentrador/conmutador, sin enrutador con NAT), funcionará según lo previsto.

En realidad, más allá de otras respuestas correctas (JDK 6;exec 'ifconfig'), existen bibliotecas basadas en JNI. Generador de UUID de Java (JUG) 2.0 Tiene código para algunas plataformas.Esto funciona al menos en JDK 1.2 y superior (quizás incluso 1.1)

Puedes usar Jxnet: https://github.com/ardikars/Jxnet (Requiere libpcap/winpcap)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top