Pergunta

Eu gostaria de obter o endereço ethernet da interface de rede que é usado para acessar um determinado site.

Como isso pode ser feito em Java?

Solução Observe que a solução aceita de getHardwareAddress só está disponível no Java 6.Não parece ser uma solução para o Java 5 para além da execução de i(f|p)confing.

Foi útil?

Solução

o java.líquida.NetworkInterface.getHardwareAddress (método adicionado no Java 6)

Ele tem que ser chamado, na máquina que você está interessado - o MAC não é transferido através de limites de rede (por exemplo,LAN e WAN).Se você quiser fazer uso dela em um servidor de site para interrogar os clientes, você teria que executar uma applet que iria relatar o resultado de volta para você.

Para Java 5 e mais velhos que eu encontrado código a análise de saída das ferramentas de linha de comando em vários sistemas de.

Outras dicas

Você pode obter o endereço que se conecta ao seu ServerSocket usando http://java.sun.com/javase/6/docs/api/java/net/NetworkInterface.html#getInetAddresses()

No entanto, se o seu cliente estiver se conectando através de um NAT, em seguida, você irá obter o endereço do roteador, e NÃO o endereço Ethernet.Se ele estiver em sua rede local (através de um hub/switch, nenhum roteador com NAT) o wil funcionar conforme pretendido.

Na verdade, além de outras respostas certas (JDK 6;exec 'ifconfig'), há JNI, baseado em bibliotecas. Java Uuid Gerador (JUG) 2.0 tem o código para algumas plataformas.Isso funciona no JDK 1.2 e, acima de, no mínimo, (talvez 1.1, mesmo)

Você pode usar Jxnet: https://github.com/ardikars/Jxnet (Exigem libpcap/winpcap)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top