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

 我来答
千锋教育
2015-12-26 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部

读取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地址

Storm代理
2023-07-25 广告
StormProxies是一家可靠的代理服务提供商,提供原生IP(住宅原生IP)和高匿名代理服务。以下是关于StormProxies的原生IP服务的一些信息:1. 住宅原生IP:StormProxies提供的住宅原生IP是指从真实的家庭或企... 点击进入详情页
本回答由Storm代理提供
烟头246
推荐于2016-02-18
知道答主
回答量:4
采纳率:0%
帮助的人:3万
展开全部
#include<sys/socket.h>
#include<sys/ioctl.h>
#include<netinet/if_ether.h>
#include<net/if.h>
#include<linux/sockios.h>
#include<stdio.h>
#include<string.h>
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<ETH_ALEN;i++)
printf("%3d:",macaddr[i]);
}
}

/*然后用gcc编译,再用./a.out
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
康熙转世
2012-05-25 · TA获得超过6839个赞
知道大有可为答主
回答量:4325
采纳率:85%
帮助的人:2935万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式