java客户端mac地址_[收藏]如何获取客户端MAC地址

方法一:

调用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地址.

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;

}

忘了附上原文的出处了:

How to get IP address of the browser when its operating behind a proxy/firewall? (applets...activex....??)

http://www.faqts.com/knowledge_base/view.phtml/aid/9005/fid/125

关于WMI的详细信息可以参看MSDN:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/wmi_tasks_for_scripts_and_applications.asp

平心而论,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查询,获取它的返回值就可以获取到它所有的网卡地址.

以上内容来自dev2dev的讨论帖:

posted on 2005-01-20 08:50 eamoi 阅读(636) 评论(1)  编辑 收藏 收藏至365Key 所属分类: Java

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值