NetworkInterface getByInetAddress(InetAddress address) //根据网卡绑定的IP地址获得NetworkInterface对象
Enumeration<NetworkInterface> getNetworkInterfaces() //枚举本机中所有NetworkInterface对象
String NetworkInterface::getDisplayName() //读取网络接口显示名称
String NetworkInterface::getName() //读取网络接口设备名称
byte[] NetworkInterface::getHardwareAddress() //读取网络接口硬件地址(MAC地址)
在Java程序看来,无论在Linux系统下还是在Windows系统下,网卡的内部设备名称都是相同的,其形式类似于eth0、eth1、eth2……,其中最后的数字为网卡编号。
2.2应用NetworkInterface类读取网卡地址的基本思路
(1)导入java.net包;
(2)用NetworkInterface类的getByName方法获得第一个网卡对应的NetworkInterface对象。
(3)调用已获得NetworkInterface对象的getHardwareAddress方法读取MAC地址。
相关代码如下:
import java.net.*;
...
//获取网卡eth0对应的NetworkInterface对象
NetworkInterface face=NetworkInterface.getByName("eth0");
//读取网卡硬件地址
byte[] macData=face.getHardwareAddress();
...
如果系统存在多块网卡,读取其他网卡硬件地址的基本方法类似,只需要修改上述程序中的网卡设备名称即可。
|