方法一:
調(diào)用Windows的DOS命令,從輸出結(jié)果中讀取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!!
缺點(diǎn):只能取得服務(wù)器端MAC地址.如果要取得客戶端的MAC地址,需用Applet.只針對MS-WIN系統(tǒng).
方法二:
可以用JS或vbscript來調(diào)用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
關(guān)于WMI的詳細(xì)信息可以參看MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/wmi_tasks_for_scripts_and_applications.asp
平心而論,WMI的很強(qiáng)大的。原先需要動用重量級編程工具才能做到的事,現(xiàn)在用js/vbscript就可以做了。
獲取多塊網(wǎng)卡的MAC地址:
if(objObject.MACAddress != null && objObject.MACAddress != "undefined"){
MACAddr = objObject.MACAddress;
alert( MACAddr );
}
缺點(diǎn):需要ActiveX支持.對MS-WIN系統(tǒng)有效.
方法三:
想137口發(fā)送UDP查詢:
WINDOWS平臺的客戶端(當(dāng)獲取時它轉(zhuǎn)換為服務(wù)端角色),NETBIOS協(xié)議在137口上,我們只要向它的137口發(fā)送UDP查詢,獲取它的返回值就可以獲取到它所有的網(wǎng)卡地址.
以上內(nèi)容來自dev2dev的討論帖:
http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=121&threadID=12941&tstart=0
評論: # Java系統(tǒng)如何獲取客戶端的MAC地址? [TrackBack] 2005-01-20 11:01 | eamoi
Ping Back來自:blog.csdn.net
eamoi引用了該文章,地址:http://blog.csdn.net/eamoi/archive/2005/01/20/260611.aspx