这是一个实现获取主机名称,IP地址,MAC地址的类,并加入了判断是否为局域网地址的过程.返回值是一个Vector型的地址集合,可以在其它Java类或JSP中引用.
/**
*实现获取主机名称,IP地址,MAC地址的类.
*<br>Copyright (C) ☆苹果工作室☆
*/
package com.applestudio.util;
import java.io.*;
import java.util.*;
public class Network{
/**
* 返回一个Vector型的地址集合
* @return host,ip,mac
*/
public static Vector getAddress() {
String address = "",host="",ip="",mac="";
Vector vector=new Vector(3);
String os = System.getProperty("os.name");
if ( os != null && os.startsWith("Windows")) {
try {
String command = "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("Host Name") > 0) {
address = line.substring(line.indexOf(":")+2);
System.out.println("Host:"+address.trim()+"/n");
host=address;
}
if (line.indexOf("Physical Address") > 0) {
address = line.substring(line.indexOf(":")+2);
System.out.println("MAC:"+address.trim());
mac=address;
}
if (line.indexOf("IP Address") > 0) {
address = line.substring(line.indexOf(":")+2);
String[] addr=address.split("//.");
//判断是否为局域网内地址
if((addr[0].equals("192")&&addr[1].equals("168"))
||(addr[0].equals("172")&&Integer.parseInt(addr[1])>=16&&Integer.parseInt(addr[1])<=131)
||(addr[0].equals("10"))){
System.out.print("This is a Local Net ");
}
ip=address;
System.out.println("IP :"+address.trim()+"/n");
}
}
vector.addElement(host);vector.addElement(ip);vector.addElement(mac);
br.close();
}catch (IOException e){ }
}
return vector;
}
public static void main(String[] args){
Vector address=Network.getAddress();
//System.out.println("Host:"+address.elementAt(0));
//System.out.println("IP:"+address.elementAt(1));
//System.out.println("MAC:"+address.elementAt(2));
}
}