永发信息网

java怎样获取以太网的MAC地址

答案:3  悬赏:40  手机版
解决时间 2021-01-08 04:32
  • 提问者网友:焚苦与心
  • 2021-01-07 14:14
java怎样获取以太网的MAC地址
最佳答案
  • 五星知识达人网友:玩家
  • 2021-01-07 14:23
读取ipconfig/all里面的内容:
public static String checkPhysicalAddress() {  
          String physicalAddress ="";
           try {  
            
               String line;  
               Process process = Runtime.getRuntime().exec("cmd /c ipconfig /all");  
               BufferedReader bufferedReader = new BufferedReader(  
                       new InputStreamReader(process.getInputStream()));
               int temp=1;
               int switchon=0;
               while ((line = bufferedReader.readLine()) != null) {
                 if(switchon ==1){
                    temp++;
                 }
                 if(line.indexOf("以太网适配器 本地连接:") !=-1){
                    switchon=1;
                    continue;
                 }
                
                   if (temp == 5) {  
                   line = bufferedReader.readLine();
                   System.out.println("1:"+line);
                       if (line.indexOf(":") != -1) {  
                       physicalAddress = line.substring(line.indexOf(":") + 2).replaceAll("-", "").trim();  
                           break; //找到MAC,推出循环  
                       }  
                   }  
               }  
               //process.waitFor();  
           } catch (Exception e) {  
               e.printStackTrace();  
           }  
           return physicalAddress;  
       }
一行一行的读取命令行的东西,直到我们想要的一行
如下图我们需要的是“以太网适配器 本地链接:”这里面的物理地址,上面的代码就是找到这一行,然后再下去五行就是我们要的MAC地址

全部回答
  • 1楼网友:大漠
  • 2021-01-07 15:17
#include
#include
#include
#include
#include
#include
#include
char *device="eth0"; //eth0是网卡设备名
unsigned char macaddr[ETH_ALEN]; //ETH_ALEN(6)是MAC地址的长度
main()
{
int s=socket(AF_INET,SOCK_DGRAM,0); //建立套接口
int i;
struct ifreq req;
strcpy(req.ifr_name,device); //将设备名作为输入参数传入
int err = ioctl(s,SIOCGIFHWADDR,&req); //执行取MAC地址操作
close(s);
if(err!=-1)
{
memcpy(macaddr,req.ifr_hwaddr.sa_data,ETH_ALEN); //取输出的MAC地址
for(i=0;i printf("%3d:",macaddr[i]);
}
}
/*然后用gcc编译,再用./a.out
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯