java如何获得wlan mac_如何获取客户端MAC地址(三个方法)

本文介绍了Java获取Windows系统下客户端MAC地址的三种方法:通过DOS命令ipconfig,利用WMI接口,以及通过发送UDP查询到137端口。每种方法的优缺点也进行了说明,如DOS命令适用于服务器端,WMI接口需要ActiveX支持,而UDP查询适用于所有Windows系统。
摘要由CSDN通过智能技术生成

方法一:

调用Windows的DOS命令,从输出结果中读取MAC地址:

public static String getMACAddress() {

String address = “”;

String os = System.getProperty(“os.name”);

if ( os != null && os.startsWith(“Windows”)) {

try {

String command = “cmd.exe /c ipconfig /all”;

Process p = Runtime.getRuntime().exec(command);

BufferedReader br =

new BufferedReader(

new InputStreamReader(p.getInputStream()));

String line;

while ((line = br.readLine()) != null) {

if (line.indexOf(“Physical Address”) > 0) {

int index = line.indexOf(“:”);

index += 2;

address = line.substring(index);

break;

}

}

br.close();

return address.trim();

}

catch (IOException e) { }

}

return address;

}

We can replace the “ipconfig” to “ping x.x.x.x” and “arp -a”…We can get the mac list…haha!!

缺点:只能取得服务器端MAC地址.如果要取得客户端的MAC地址,需用Applet.只针对MS-WIN系统.

方法二:

可以用JS或vbscript来调用WMI接口来获取Client端的MAC地址.

WMI Scripting HTML

document.forms\[0\].txtMACAddr.value=unescape(MACAddr);

document.forms\[0\].txtIPAddr.value=unescape(IPAddr);

document.forms\[0\].txtDNSName.value=unescape(sDNSName);

//document.formbar.submit();

if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true)

\{

if(objObject.MACAddress != null && objObject.MACAddress != "undefined")

MACAddr = objObject.MACAddress;

if(objObject.IPEnabled && objObject.IPAddress(0) != null && objObject.IPAddress(0) != "undefined")

IPAddr = objObject.IPAddress(0);

if(objObject.DNSHostName != null && objObject.DNSHostName != "undefined")

sDNSName = objObject.DNSHostName;

\}

平心而论,WMI的很强大的。原先需要动用重量级编程工具才能做到的事,现在用js/vbscript就可以做了。

获取多块网卡的MAC地址:

if(objObject.MACAddress != null && objObject.MACAddress != “undefined”){

MACAddr = objObject.MACAddress;

alert( MACAddr );

}

缺点:需要ActiveX支持.对MS-WIN系统有效.

方法三:

想137口发送UDP查询:

WINDOWS平台的客户端(当获取时它转换为服务端角色),NETBIOS协议在137口上,我们只要向它的137口发送UDP查询,获取它的返回值就可以获取到它所有的网卡地址

.Net 技术探讨群 4151320

欢迎大家加入!!!

https://www.cnblogs.com/happyday56/category/93641.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值