JAVA中获取本机IP的方式有多种,这里做一个汇总,并同时提供了常用的获取本机参数的方式。
package com.lxz.util; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.NetworkInterface; import java.util.ArrayList; import java.util.Formatter; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Properties; import org.junit.Test; public class SystemUtil { // 通过截取CMD流方式得到计算机的配置信息(不建议使用) @Test public void getIpAddress() { Process p = null; Listaddress = new ArrayList (); try { p = new ProcessBuilder("ipconfig", "/all").start(); } catch (Exception e) { e.printStackTrace(); } StringBuilder sb = new StringBuilder(); // 读取进程输出值 InputStream inputStream = p.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); String s = ""; try { while ((s = br.readLine()) != null) { sb.append(s + "\n"); } } catch (Exception e) { e.printStackTrace(); } finally { try { inputStream.close(); } catch (Exception e) { e.printStackTrace(); } } System.out.println(sb); for(String add:address){ System.out.println(add); } } @Test public void getIpconfig() { Map map = System.getenv(); // Administrator System.out.println(map.get("USERNAME"));// 获取用户名 // LENOVO System.out.println(map.get("COMPUTERNAME"));// 获取计算机名 // LENOVO System.out.println(map.get("USERDOMAIN"));// 获取计算机域名 } // 得到计算机的IP地址和MAC地址 @Test public void getConfig() { try { InetAddress address = InetAddress.getLocalHost(); // address--->Lenovo/192.168.30.27 System.out.println("address--->" + address); NetworkInterface ni = NetworkInterface.getByInetAddress(address); // ni.getInetAddresses().nextElement().getAddress(); // networkInterface--->name:eth4 (VMware Virtual // Ethernet Adapter for VMnet8) System.out.println("networkInterface--->" + ni); byte[] MAC = ni.getHardwareAddress(); // MAC--->[B@d08633, 数组对象的栈内存地址 System.out.println("MAC--->" + MAC); String IP = address.getHostAddress(); // IP--->192.168.30.27 System.out.println("IP--->" + IP); String formatMAC = ""; Formatter formatter = new Formatter(); for (int i = 0; i < MAC.length; i++) { /** MAC[0] = 0 MAC[1] = 80 MAC[2] = 86 MAC[3] = -64 MAC[4] = 0 MAC[5] = 8 */ System.out.println("MAC[" + i + "] = " + MAC[i]); // Locale.getDefault()返回zh_CN // %02X%s: 格式化为十六进制类型的字符串 formatMAC = formatter.format(Locale.getDefault(), "%02X%s", MAC[i], (i < MAC.length - 1) ? "-" : "").toString(); } // formatMAC--->00-26-9E-45-E9-51 System.out.println("formatMAC--->" + formatMAC); } catch (Exception e) { e.printStackTrace(); } } // 得到计算机的ip,名称,操作系统名称,操作系统版本 @Test public void config() { try { InetAddress addr = InetAddress.getLocalHost(); String ip = addr.getHostAddress().toString(); // 获取本机ip String hostName = addr.getHostName().toString(); // 获取本机计算机名称 // 本机IP:192.168.30.27 // 本机名称:Lenovo System.out.println("本机IP:" + ip + "\n本机名称:" + hostName); Properties props = System.getProperties(); // 操作系统的名称:Windows Vista(这里我是win7,但是输出的却是Windows Vista, // 在win10中,输出的却是Windows 8) System.out.println("操作系统的名称:" + props.getProperty("os.name")); // 操作系统的版本:6.1 System.out.println("操作系统的版本:" + props.getProperty("os.version")); } catch (Exception e) { e.printStackTrace(); } } // java环境 @Test public void getJavaProp() { Properties props = System.getProperties(); /** Java的运行环境版本:1.6.0_06 Java的运行环境供应商:Sun Microsystems Inc. Java供应商的URL:http://java.sun.com/ Java的安装路径:D:\Java\jdk1.6.0_06\jre Java的虚拟机规范版本:1.0 Java的虚拟机规范供应商:Sun Microsystems Inc. Java的虚拟机规范名称:Java Virtual Machine Specification Java的虚拟机实现版本:10.0-b22 Java的虚拟机实现供应商:Sun Microsystems Inc. Java的虚拟机实现名称:Java HotSpot(TM) Client VM Java运行时环境规范版本:1.6 Java运行时环境规范供应商:null Java运行时环境规范名称:Java Platform API Specification Java的类格式版本号:50.0 Java的类路径:E:\Work\workspace\eclipse\Coder\bin; E:\Work\workspace\eclipse\Coder\lib\junit-4.10.jar; /D:/Java/eclipse/configuration/org.eclipse.osgi/bundles/330/1/.cp/; /D:/Java/eclipse/configuration/org.eclipse.osgi/bundles/328/1/.cp/; /D:/Java/eclipse/configuration/org.eclipse.osgi/bundles/329/1/.cp/ 加载库时搜索的路径列表:D:\Java\jdk1.6.0_06\bin;.; C:\Windows\Sun\Java\bin;C:\Windows\system32; C:\Windows;D:/Java/jdk1.6.0_06/bin/../jre/bin/client; D:/Java/jdk1.6.0_06/bin/../jre/bin; D:/Java/jdk1.6.0_06/bin/../jre/lib/i386; C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem; C:\Windows\System32\WindowsPowerShell\v1.0\; C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static; D:\Java\jdk1.6.0_06\bin;D:\Java\VisualSVN-Server\bin; C:\Python27;C:\Program Files\TortoiseSVN\bin; D:\Java\apache-tomcat-7.0.63\lib;D:\Java\eclipse; 默认的临时文件路径:C:\Users\ADMINI~1\AppData\Local\Temp\ 一个或多个扩展目录的路径:D:\Java\jdk1.6.0_06\jre\lib\ext; C:\Windows\Sun\Java\lib\ext 操作系统的名称:Windows Vista 操作系统的构架:x86 操作系统的版本:6.1 文件分隔符:\ 用户的主目录:C:\Users\Administrator 用户的当前工作目录:E:\Work\workspace\eclipse\Coder */ System.out.println("Java的运行环境版本:" + props.getProperty("java.version")); System.out.println("Java的运行环境供应商:" + props.getProperty("java.vendor")); System.out.println("Java供应商的URL:" + props.getProperty("java.vendor.url")); System.out.println("Java的安装路径:" + props.getProperty("java.home")); System.out.println("Java的虚拟机规范版本:" + props.getProperty("java.vm.specification.version")); System.out.println("Java的虚拟机规范供应商:" + props.getProperty("java.vm.specification.vendor")); System.out.println("Java的虚拟机规范名称:" + props.getProperty("java.vm.specification.name")); System.out.println("Java的虚拟机实现版本:" + props.getProperty("java.vm.version")); System.out.println("Java的虚拟机实现供应商:" + props.getProperty("java.vm.vendor")); System.out.println("Java的虚拟机实现名称:" + props.getProperty("java.vm.name")); System.out.println("Java运行时环境规范版本:" + props.getProperty("java.specification.version")); System.out.println("Java运行时环境规范供应商:" + props.getProperty("java.specification.vender")); System.out.println("Java运行时环境规范名称:" + props.getProperty("java.specification.name")); System.out.println("Java的类格式版本号:" + props.getProperty("java.class.version")); System.out.println("Java的类路径:" + props.getProperty("java.class.path")); System.out.println("加载库时搜索的路径列表:" + props.getProperty("java.library.path")); System.out.println("默认的临时文件路径:" + props.getProperty("java.io.tmpdir")); System.out.println("一个或多个扩展目录的路径:" + props.getProperty("java.ext.dirs")); System.out.println("操作系统的名称:" + props.getProperty("os.name")); System.out.println("操作系统的构架:" + props.getProperty("os.arch")); System.out.println("操作系统的版本:" + props.getProperty("os.version")); System.out.println("文件分隔符:" + props.getProperty("file.separator")); // 在Unix系统中是"/" // System.out.println("路径分隔符:"+props.getProperty("path.separator")); // 在Unix系统中是":" // System.out.println("行分隔符:"+props.getProperty("line.separator")); // 在Unix系统中是"/n" // System.out.println("用户的账户名称:"+props.getProperty("user.name")); System.out.println("用户的主目录:" + props.getProperty("user.home")); System.out.println("用户的当前工作目录:" + props.getProperty("user.dir")); } }
本文固定链接:心知博客 » Java获取本机IP的方法汇总
本站内容除特别标注外均为原创,欢迎转载,但请保留出处!