用java得到w2k计算机上的网卡物理地址
2008-05-23 02:38
495 查看
google_ad_client = "pub-8800625213955058";
/* 336x280, 创建于 07-11-21 */
google_ad_slot = "0989131976";
google_ad_width = 336;
google_ad_height = 280;
//
网卡物理地址在全球是唯一不重复的,所以有时我们需要得到一个计算机的网卡物理地址来确认用户身份,下面我编写了一个GetPhysicalAddress类来获得当前计算机的网卡物理地址,此方法只能获取win2k系统的网卡物理地址
,不能用于其他操作系统。
众所周知,在win2k下的shell环境里,我们可以使用ipconfig/all命令查看当前网卡配置情况,其中有一项是网卡的物理地址。例如在DOS环境中输入 ipconfig/all命令,结果如下:
加粗部分是网卡的物理地址
我们只要在java中执行这个外部命令,然后把需要的字符串解析出来就可以得到当前机器的物理网卡地址了。
首先编写一个Util_syscmd类,方法execute()使我们能够执行外部命令,并返回一个Vector类型的结果集。
然后设计一个GetPhysicalAddress类,这个类用来调用Util_syscmd类的execute()方法,执行cmd.exe/c ipconfig/all命令,并解析出网卡物理ip地址。getPhysicalAddress()方法返回网卡的物理地址,如果机器中没有安装网卡或操作系统不支持ipconfig命令,返回not find字符串
/* 336x280, 创建于 07-11-21 */
google_ad_slot = "0989131976";
google_ad_width = 336;
google_ad_height = 280;
//
网卡物理地址在全球是唯一不重复的,所以有时我们需要得到一个计算机的网卡物理地址来确认用户身份,下面我编写了一个GetPhysicalAddress类来获得当前计算机的网卡物理地址,此方法只能获取win2k系统的网卡物理地址
,不能用于其他操作系统。
众所周知,在win2k下的shell环境里,我们可以使用ipconfig/all命令查看当前网卡配置情况,其中有一项是网卡的物理地址。例如在DOS环境中输入 ipconfig/all命令,结果如下:
Host Name . . . . . . . . . . . . : mars Primary DNS Suffix . . . . . . . : Node Type . . . . . . . . . . . . : Hybrid IP Routing Enabled. . . . . . . . : No WINS Proxy Enabled. . . . . . . . : No DNS Suffix Search List. . . . . . : worksoft.com.cn PPP adapter 263: Connection-specific DNS Suffix . : Description . . . . . . . . . . . : WAN (PPP/SLIP) I Physical Address. . . . . . . . . : 00-53-45-00-00-0 DHCP Enabled. . . . . . . . . . . : No IP Address. . . . . . . . . . . . : 61.135.2.27 Subnet Mask . . . . . . . . . . . : 255.255.255.255 Default Gateway . . . . . . . . . : 61.135.2.27 DNS Servers . . . . . . . . . . . : 202.106.196.152 202.106.196.115 |
我们只要在java中执行这个外部命令,然后把需要的字符串解析出来就可以得到当前机器的物理网卡地址了。
首先编写一个Util_syscmd类,方法execute()使我们能够执行外部命令,并返回一个Vector类型的结果集。
import java.lang.*; import java.io.*; import java.util.*; /** * @author Jackliu * */ public class Util_syscmd{ /** * @param shellCommand * */ public Vector execute(String shellCommand){ try{ Start(shellCommand); Vector vResult=new Vector(); DataInputStream in=new DataInputStream(p.getInputStream()); BufferedReader reader=new BufferedReader(new InputStreamReader(in)); String line; do{ line=reader.readLine(); if (line==null){ break; } else{ vResult.addElement(line); } }while(true); reader.close(); return vResult; }catch(Exception e){ //error return null; } } /** * @param shellCommand * */ public void Start(String shellCommand){ try{ if(p!=null){ kill(); } Runtime sys= Runtime.getRuntime(); p=sys.exec(shellCommand); }catch(Exception e){ System.out.println(e.toString()); } } /** kill this process */ public void kill(){ if(p!=null){ p.destroy(); p=null; } } Process p; } |
import java.io.*; import java.util.*; class GetPhysicalAddress{ //网卡物理地址长度 static private final int _physicalLength =16; public static void main(String[] args){ //output you computer phycail ip address System.out.println(getPhysicalAddress()); } static public String getPhysicalAddress(){ Util_syscmd shell =new Util_syscmd(); String cmd = "cmd.exe /c ipconfig/all"; Vector result ; result=shell.execute(cmd); return parseCmd(result.toString()); } //从字符串中解析出所需要获得的字符串 static private String parseCmd(String s){ String find="Physical Address. . . . . . . . . :"; int findIndex=s.indexOf(find); if (findIndex==-1) return "not find"; else return s.substring(findIndex find.length() 1,findIndex find.length() 1 _physicalLength); } } |
相关文章推荐
- 用java得到w2k计算机上的网卡物理地址
- 在SQLServer上得到客户端信息(操作的数据库名,计算机名,用户名,网卡物理地址,IP地址,程序名)
- JAVA得到网卡物理地址(windows和Linux)
- JAVA得到网卡物理地址(Windows和Linux)(参考)
- 在SQLServer上得到客户端信息(操作的数据库名,计算机名,用户名,网卡物理地址,IP地址,程序名)
- JAVA得到网卡物理地址
- JAVA得到网卡物理地址(windows和Linux)
- java,jsp获取客户端网卡物理地址
- java,jsp获取客户端网卡物理地址(转帖)
- 新浪旧事-JAVA之获取网卡物理地址
- java获取网卡物理地址
- 在JAVA中如何获取本机的网卡物理地址
- C#获取本机和其它计算机物理网卡地址(MAC)
- java取主机的网卡物理地址
- vb 得到本机网卡的物理地址、操作系统的安装路径及版本号
- C#获取本机和其它计算机物理网卡地址(MAC)
- java中得到计算机MAC网卡标识,IP,计算机名称等唯一标识问题
- java执行系统命令,获取网卡物理地址
- 快速修改网卡物理地址方法二则 zz
- J2SE5.0新特性之windows下读取网卡的物理地址