Java WebStart应用程序如何获取访问我的网页的MAC地址

前端之家收集整理的这篇文章主要介绍了Java WebStart应用程序如何获取访问我的网页的MAC地址前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个 java webstart应用程序来从网站部署,以便用户可以单击并运行我的软件.我需要一种独特的机器识别,以避免滥用文件的访问.我想使用客户端的MAC地址作为唯一密钥,以便服务器可以确保没有客户端下载太多.

当然,用户可能有多个网卡,那么我的Java应用程序如何确定用户用来访问我的网站的网卡的MAC地址?

解决方法

您可以使用java.net.NetworkInterface.getNetworkInterfaces获取网络接口,并在它们上调用getHardwareAddress()以获取MAC地址.

您可能希望使用if.isLoopBack()过滤掉环回(其中“if”是接口对象).还过滤掉if.getHardwareAddress()返回null的任何接口.然后挑出一个.您可以按名称if.getName()对它们进行排序,然后取第一个.出于您的目的,它是否是用于下载文件的实际界面并不重要,只是您可以以某种方式识别计算机.最后,if.getHardwareAddress()为您提供了一个包含MAC地址的字节数组.如果您更喜欢使用String,请使用“?x”.format(byte)格式化每个字节,并使用“:”作为分隔符将它们连接起来.

正如在另一个答案中所建议的那样,使用PersistenceService可能更好.

但是,如果要在每台计算机上具有相同文件/ homedirs的情况下在不同计算机上为同一用户保留不同数据,则使用MAC地址可能很有用.您可以将MAC地址用作传递给PersistenceService#create()和get()的URL的一部分.如果您需要每台计算机数据而不是每用户数据,则非常有用.

简短示例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"
  }
}
原文链接:https://www.f2er.com/java/124624.html

猜你在找的Java相关文章