Java获取CPU序列号和网卡Mac地址

转载 2006年05月25日 15:00:00
转自:http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=124&threadID=28320&messageID=171767
//Java获得CPU序列号和网卡Mac地址
/*
利用Runtime call操作系统的命令,具体的命令取决于不同的操作系统,注意不要调用Runtime.getRuntime().exec(String)接口,要用Runtime.getRuntime().exec(String[])这个接口,不然复杂命令的执行会有问题。例子如下(拿cpu个数,其他类似):
定义命令:
WindowsCmd ="cmd.exe /c echo %NUMBER_OF_PROCESSORS%";//windows的特殊
SolarisCmd = {"/bin/sh", "-c", "/usr/sbin/psrinfo | wc -l"};
AIXCmd = {"/bin/sh", "-c", "/usr/sbin/lsdev -Cc processor | wc -l"};
HPUXCmd = {"/bin/sh", "-c", "echo /"map/" | /usr/sbin/cstm | grep CPU | wc -l "};
LinuxCmd = {"/bin/sh", "-c", "cat /proc/cpuinfo | grep ^process | wc -l"};

然后判断系统:
os = System.getProperty("os.name").toLowerCase();

根据不同的操作系统call不同的命令。
*/
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.LineNumberReader;

public class GetMACAddress
{
public String getMACAddress(String ipAddress)
{
String str = "",strMAC = "",macAddress = "";
try
{
Process pp = Runtime.getRuntime().exec("nbtstat -a " + ipAddress);
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)
{
strMAC = str.substring(str.indexOf("MAC Address") + 14,str.length());
break;
}
}
}
}
catch(IOException ex)
{
return "Can't Get MAC Address!";
}
//
if(strMAC.length() < 17)
{
return "Error!";
}
macAddress = strMAC.substring(0,2) + ":"
+ strMAC.substring(3,5) + ":"
+ strMAC.substring(6,8) + ":"
+ strMAC.substring(9,11) + ":"
+ strMAC.substring(12,14) + ":"
+ strMAC.substring(15,17);
//
return macAddress;
}

public static void main(String[] args)
{
GetMACAddress getMACAddress = new GetMACAddress();
System.out.println(getMACAddress.getMACAddress("172.18.8.225"));

try
{
java.lang.Process proc = Runtime.getRuntime().exec("ipconfig /all");
InputStream istr = proc.getInputStream();
byte[] data = new byte[1024];
istr.read(data);
String netdata = new String(data);
System.out.println("Your Mac Address=" + procAll(netdata));
}
catch(IOException e)
{
System.out.println("error=" + e);
}
}

public static String procAll(String str)
{
return procStringEnd(procFirstMac(procAddress(str)));
}

public static String procAddress(String str)
{
int indexof = str.indexOf("Physical Address");
if(indexof > 0)
{
return str.substring(indexof,str.length());
}
return str;
}

public static String procFirstMac(String str)
{
int indexof = str.indexOf(":");
if(indexof > 0)
{
return str.substring(indexof + 1,str.length()).trim();
}
return str;
}

public static String procStringEnd(String str)
{
int indexof = str.indexOf("/r");
if(indexof > 0)
{
return str.substring(0,indexof).trim();
}
return str;
}
}



import java.util.Vector;

class GetNetMAC
{
//网卡物理地址长度
static private final int _physicalLength = 16;

public static void main(String[] args)
{
//output you computer phycail ip address
System.out.println("The MAC Addressis:/t" + getPhysicalAddress());
}

static public String getPhysicalAddress()
{
GetNetMACShell shell = new GetNetMACShell();
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);
}
}
}




--------------------------------------------------------------------------------
Read a bit and take it out , then come back read some more .



http://202.101.111.1/123/
http://iAMin.BlogDriver.com


YuLimin [版主]

发帖数: 1,577
活跃积分: 1,591
技术积分: 196
可用币值: 486
注册时间: 2002-9-4
用户状态:正常

Re: Java获得CPU序列号和网卡Mac地址

提交时间: Nov 2, 2005 11:51:28 AM 引用 回复 发消息


import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.InputStreamReader;
import java.util.Vector;

public class GetNetMACShell
{
private Process process = null;

public Vector execute(String shellCommand)
{
try
{
Start(shellCommand);
Vector vResult = new Vector();
DataInputStream in = new DataInputStream(process.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;
}
}

public void Start(String shellCommand)
{
try
{
if(process != null)
{
kill();
}
Runtime sys = Runtime.getRuntime();
process = sys.exec(shellCommand);
}
catch(Exception e)
{
System.out.println(e.toString());
}
}

public void kill()
{
if(process != null)
{
process.destroy();
process = null;
}
}
}

相关文章推荐

JAVA获取CPU序列号

JAVA获取CPU序列号

java 获取CPU 和 硬盘序列号的方法

各种获取CPU序列号 和 硬盘序列号的方法
  • stargc
  • stargc
  • 2016年10月13日 14:27
  • 1978

获取CPU序列号(多个CPU,只取第一个)

/**      * 获取CPU号,多CPU时,只取第一个      * @return      */     public static String getCPUSerial() { ...
  • wugouzi
  • wugouzi
  • 2014年05月07日 00:08
  • 3839

纯java获取CPU序列号,生成机器码

用于生成机器码感觉用mac不靠谱,因为mac能改,(除CPU序列号外,还可以获得主板序列号。) Java代码  public static void main(String[] args) {    ...

java调用dll获取硬盘和cpu序列号

#include #include #include #include #include #include #include #include #include //-----------------...

java 取cpuid、主板id、硬盘id、mac地址

import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; import java.io.Inp...
  • fhx007
  • fhx007
  • 2012年04月15日 22:32
  • 5285

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

java 获取本机的所有网卡的Mac地址

public class Mac { public static void main(String[] args) { try { Enumeratio...
  • woai671
  • woai671
  • 2017年07月26日 17:19
  • 729

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

java获取系统硬件信息的第三方jar包

官网:https://support.hyperic.com/display/SIGAR/Home%3bjsessionid=D9A582CF35294BA1F39FCBD2CC3CF0DB#Home...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java获取CPU序列号和网卡Mac地址
举报原因:
原因补充:

(最多只允许输入30个字)