Вы можете использовать java.net.NetworkInterface.getNetworkInterfaces для получения сетевых интерфейсов и вызывать getHardwareAddress () для них, чтобы получить MAC-адрес.
Вы можете захотеть отфильтровать обратную петлю с помощью if.isLoopBack () (где «if» - объект интерфейса). Также отфильтруйте любой интерфейс, где if.getHardwareAddress () возвращает ноль. Затем выберите один. Вы можете отсортировать их по имени if.getName () и взять первый. Для ваших целей не имеет значения, является ли это фактическим интерфейсом, используемым для загрузки ваших файлов, или нет, просто вы можете как-то идентифицировать компьютер. Наконец, if.getHardwareAddress () выдает массив байтов с MAC-адресом. Если вы предпочитаете использовать строку, отформатируйте каждый байт с помощью «% 02x» .format (byte) и соедините их с разделителем «:».
Как предлагается в другом ответе, может быть лучше использовать PersistenceService.
Однако использование MAC-адреса может быть полезно, если вы хотите сохранить разные данные для одного и того же пользователя на разных компьютерах в случае, когда у пользователя есть одинаковые файлы / домашние каталоги на каждом компьютере. Вы можете использовать MAC-адрес как часть URL-адреса, который вы передаете PersistenceService # create () и get (). Полезно, если вам нужны данные для каждого компьютера, а не для каждого пользователя.
Краткий пример Scala-код:
def computerID: String = {
try { // mac address of first network interface
return java.net.NetworkInterface.getNetworkInterfaces
.filter(!_.isLoopback)
.filter(_.getHardwareAddress != null)
.toList.sortBy(_.getName).head
.getHardwareAddress.map("%02x".format(_)).mkString(":")
} catch {
case _ => return "0" // no mac address available? use default "0"
}
}