摘 要 为满足Java开发跨平台的网络唤醒、版权保护等的类型应用需要,在分析目前常用的MAC地址查询方法的原理与不足的基础上,提出了一种应用NetworkInterface Java工具类,实现跨平台的MAC地址查询功能的新方法。使用这种方法可以实现真正跨平台的纯Java MAC地址查询功能并进一步实现与之相关的各类应用系统。
关键词 Java;Mac地址查询
1 引言
在目前很多的网络应用系统中,为实现远程唤醒、版权保护等方面功能,经常需要查询系统所在主机网卡的硬件(MAC)地址。在基于C++、VB的系统中,通常要调用一些操作系统特定的网络API来查询网卡的硬件地址,尽管实现方法也比较方便,但通常不具备跨平台特性。
常用的程序设计语言中,Java语言的网络功能非常强大,在网络应用系统的开发实践中应用十分广泛,但以前Java技术在访问系统硬件信息方面存在不足,因此通常在用Java实现的系统中如果要查询本机的网卡硬件地址,通常采用先借助运行时(Runtime)对象运行与网络参数配置相关的操作系统命令(Windows——ipconfig /all、Unix/Linux——ifconfig)然后从其运行结果中检索地址信息的方法。
这种方法有明显的不足:(1)跨平台通用性不好 由于不同操作系统下用于查询与配置地址信息的命令不同,需要针对不同操作系统提供不同的方案;(2)在Unix/Linux下通常只有root用户才有执行ifconfig命令的权限,用调用ifconfig命令的方法获取硬件地址可靠性不好,普通用户无法正确获取硬件地址。
2 设计思路
2.1 Java中访问网卡的API
从JDK 1.4开始,java.net包中提供了一个NetworkInterface类,该类中封装了与网络接口相关的信息。其中与查询MAC地址相关的API主要包括:
NetworkInterface getByName(String name) //根据网卡设备名获得NetworkInterface对象
|