java获取本机ip,mac,
1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStreamReader; 4 5 /** 6 * 获取MAC地址 7 * @author sunlightcs 8 * 9 */ 10 public class GetMacAddress { 11 12 /** 13 * 获取当前操作系统名称. 14 * return 操作系统名称 例如:windows,Linux,Unix等. 15 */ 16 public static String getOSName() { 17 return System.getProperty("os.name").toLowerCase(); 18 } 19 20 /** 21 * 获取Unix网卡的mac地址. 22 * @return mac地址 23 */ 24 public static String getUnixMACAddress() { 25 String mac = null; 26 BufferedReader bufferedReader = null; 27 Process process = null; 28 try { 29 /** 30 * Unix下的命令,一般取eth0作为本地主网卡 显示信息中包含有mac地址信息 31 */ 32 process = Runtime.getRuntime().exec("ifconfig eth0"); 33 bufferedReader = new BufferedReader(new InputStreamReader(process 34 .getInputStream())); 35 String line = null; 36 int index = -1; 37 while ((line = bufferedReader.readLine()) != null) { 38 /** 39 * 寻找标示字符串[hwaddr] 40 */ 41 index = line.toLowerCase().indexOf("hwaddr"); 42 /** 43 * 找到了 44 */ 45 if (index != -1) { 46 /** 47 * 取出mac地址并去除2边空格 48 */ 49 mac = line.substring(index +"hwaddr".length()+ 1).trim(); 50 break; 51 } 52 } 53 } catch (IOException e) { 54 e.printStackTrace(); 55 } finally { 56 try { 57 if (bufferedReader != null) { 58 bufferedReader.close(); 59 } 60 } catch (IOException e1) { 61 e1.printStackTrace(); 62 } 63 bufferedReader = null; 64 process = null; 65 } 66 67 return mac; 68 } 69 70 71 72 /** 73 * 获取Linux网卡的mac地址. 74 * @return mac地址 75 */ 76 public static String getLinuxMACAddress() { 77 String mac = null; 78 BufferedReader bufferedReader = null; 79 Process process = null; 80 try { 81 /** 82 * linux下的命令,一般取eth0作为本地主网卡 显示信息中包含有mac地址信息 83 */ 84 process = Runtime.getRuntime().exec("ifconfig eth0"); 85 bufferedReader = new BufferedReader(new InputStreamReader(process 86 .getInputStream())); 87 String line = null; 88 int index = -1; 89 while ((line = bufferedReader.readLine()) != null) { 90 index = line.toLowerCase().indexOf("硬件地址"); 91 /** 92 * 找到了 93 */ 94 if (index != -1) { 95 /** 96 * 取出mac地址并去除2边空格 97 */ 98 mac = line.substring(index+4).trim(); 99 break; 100 } 101 } 102 } catch (IOException e) { 103 e.printStackTrace(); 104 } finally { 105 try { 106 if (bufferedReader != null) { 107 bufferedReader.close(); 108 } 109 } catch (IOException e1) { 110 e1.printStackTrace(); 111 } 112 bufferedReader = null; 113 process = null; 114 } 115 116 return mac; 117 } 118 119 /** 120 * 获取widnows网卡的mac地址. 121 * @return mac地址 122 */ 123 public static String getWindowsMACAddress() { 124 String mac = null; 125 BufferedReader bufferedReader = null; 126 Process process = null; 127 try { 128 /** 129 * windows下的命令,显示信息中包含有mac地址信息 130 */ 131 process = Runtime.getRuntime().exec("ipconfig /all"); 132 bufferedReader = new BufferedReader(new InputStreamReader(process 133 .getInputStream())); 134 String line = null; 135 int index = -1; 136 while ((line = bufferedReader.readLine()) != null) { 137 /** 138 * 寻找标示字符串[physical address] 139 */ 140 index = line.toLowerCase().indexOf("physical address"); 141 if (index != -1) { 142 index = line.indexOf(":"); 143 if (index != -1) { 144 /** 145 * 取出mac地址并去除2边空格 146 */ 147 mac = line.substring(index + 1).trim(); 148 } 149 break; 150 } 151 } 152 } catch (IOException e) { 153 e.printStackTrace(); 154 }finally { 155 try { 156 if (bufferedReader != null) { 157 bufferedReader.close(); 158 } 159 }catch (IOException e1) { 160 e1.printStackTrace(); 161 } 162 bufferedReader = null; 163 process = null; 164 } 165 166 return mac; 167 } 168 169 /** 170 * 测试用的main方法. 171 * 172 * @param argc 173 * 运行参数. 174 */ 175 public static void main(String[] argc) { 176 String os = getOSName(); 177 System.out.println(os); 178 if(os.startsWith("windows")){ 179 String mac = getWindowsMACAddress(); 180 System.out.println("本地是windows:"+mac); 181 }else if(os.startsWith("linux")){ 182 String mac = getLinuxMACAddress(); 183 System.out.println("本地是Linux系统,MAC地址是:"+mac); 184 }else{ 185 String mac = getUnixMACAddress(); 186 System.out.println("本地是Unix系统 MAC地址是:"+mac); 187 } 188 } 189 }
如果有使用请标明来源:http://www.cnblogs.com/duwenlei/