Java Votary

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  48 随笔 :: 1 文章 :: 80 评论 :: 0 Trackbacks

方法一:

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


 
 
 
 
 
 
 
  
  

  
  

  


  

   
   
   

  
 

忘了附上原文的出处了:
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的讨论帖:

http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=121&threadID=12941&tstart=0

 

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

评论: # Java系统如何获取客户端的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
posted on 2005-11-23 20:33 Dion 阅读(9755) 评论(3)  编辑  收藏 所属分类: Java

评论

# re: [收藏]如何获取客户端MAC地址 2007-03-29 12:28 joyce
import java.io.*;

public class GetMac
{
//通过IP获取网卡地址
private String getMacAddressIP(String remotePcIP){
String str="";
String macAddress="";
try {
Process pp= Runtime.getRuntime().exec ("nbtstat -A " + remotePcIP);
InputStreamReader ir = new InputStreamReader(pp.getInputStream());
LineNumberReader input = new LineNumberReader (ir);
for (int i = 1; i <100; i++)
{
str=input.readLine();
if (str!=null)
{
if(str.indexOf("MAC Address")>1)
{ macAddress=str.substring(str.indexOf("MAC Address")+14,str.length());
break;
}
}
}
}
catch (IOException ex) {}
return macAddress;
}
//通过机器名获取网卡地址
private String getMacAddressName(String remotePcIP){
String str="";
String macAddress="";
try {
Process pp= Runtime.getRuntime().exec ("nbtstat -a " + remotePcIP);
InputStreamReader ir = new InputStreamReader(pp.getInputStream());
LineNumberReader input = new LineNumberReader (ir);
for (int i = 1; i <100; i++)
{
str=input.readLine();
if (str!=null)
{
if(str.indexOf("MAC Address")>1)
{ macAddress=str.substring(str.indexOf("MAC Address")+14,str.length());
break;
}
}
}
}
catch (IOException ex) {}
return macAddress;
}
public static void main(String[] args)
{
GetMac getmac;
getmac=new GetMac();
String mac="";
mac=getmac.getMacAddressIP("192.168.0.18");//YOUR IP
System.out.println(mac);
mac=getmac.getMacAddressName("tom");// YOUR HOST-NAME
System.out.println(mac);
}
}
  回复  更多评论
  

# re: [收藏]如何获取客户端MAC地址 2008-09-11 22:17 tg54y
<input type='text' value='奶子'/>  回复  更多评论
  

# re: [收藏]如何获取客户端MAC地址 2009-11-02 21:17 爱爱爱
楼主,请把成熟点的东西放上来,  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: