Как получить адрес ethernet с помощью Java?
Я хотел бы получить Ethernet-адрес сетевого интерфейса, который используется для доступа к определенному веб-сайту.
Как это можно сделать в Java?
Решение Обратите внимание, что принятое решение getHardwareAddress
доступно только на Java 6. Кажется, что решение для Java 5 не существует, кроме выполнения я (f | p) confing.
Ответы
Ответ 1
java.net.NetworkInterface.getHardwareAddress (метод добавлен в Java 6)
Он должен быть вызван на интересующую вас машину - MAC не передается через границы сети (то есть LAN и WAN). Если вы хотите использовать его на сервере веб-сайта для опроса клиентов, вам нужно будет запустить апплет, который сообщит вам о результатах.
Для Java 5 и старше я нашел код синтаксический анализ инструментов командной строки в различных системах.
Ответ 2
Вы можете получить адрес, который подключается к вашему ServerSocket, используя http://java.sun.com/javase/6/docs/api/java/net/NetworkInterface.html#getInetAddresses()
Однако, если ваш клиент подключается через NAT, вы получите адрес маршрутизатора и НЕ адрес Ethernet. Если он находится в вашей локальной сети (через концентратор/коммутатор, без маршрутизатора с NAT), он работает по назначению.
Ответ 3
На самом деле, помимо других правильных ответов (JDK 6; exec 'ifconfig'), существуют JNI-библиотеки. Java Uuid Generator (JUG) 2.0 имеет код для некоторых платформ. Это работает как минимум на JDK 1.2 и выше (возможно, даже на 1,1)
Ответ 4
Вы можете использовать Jxnet: https://github.com/ardikars/Jxnet (Требовать libpcap/winpcap)