1、通过Runtime.getRuntime().exec("hostname")获取主机名
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class GetHostNameUsingRuntime { public static void main(String[] args) { try { // 执行hostname命令 Process hostnameProcess = Runtime.getRuntime().exec("hostname"); // 获取命令的标准输出 BufferedReader stdInput = new BufferedReader(new InputStreamReader(hostnameProcess.getInputStream())); // 读取命令输出并打印到控制台 String s; while ((s = stdInput.readLine()) != null) { System.out.println("主机名: " + s); } // 等待进程结束 hostnameProcess.waitFor(); // 获取命令的错误输出(如果有) BufferedReader stdError = new BufferedReader(new InputStreamReader(hostnameProcess.getErrorStream())); while ((s = stdError.readLine()) != null) { System.err.println("错误信息: " + s); } } catch (IOException e) { System.err.println("IOException发生: " + e.getMessage()); } catch (InterruptedException e) { System.err.println("InterruptedException发生: " + e.getMessage()); } } }
2、通过getHostName()方法获取主机名
import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Properties; import java.util.Set; public class TestSystemProperties { public static void main(String [] args){ InetAddress netAddress = getInetAddress(); System.out.println("host ip:" + getHostIp(netAddress)); System.out.println("host name:" + getHostName(netAddress)); Properties properties = System.getProperties(); Set<String> set = properties.stringPropertyNames(); //获取java虚拟机和系统的信息。 for(String name : set){ System.out.println(name + ":" + properties.getProperty(name)); } } public static InetAddress getInetAddress(){ try{ return InetAddress.getLocalHost(); }catch(UnknownHostException e){ System.out.println("unknown host!"); } return null; } public static String getHostIp(InetAddress netAddress){ if(null == netAddress){ return null; } String ip = netAddress.getHostAddress(); //get the ip address return ip; } public static String getHostName(InetAddress netAddress){ if(null == netAddress){ return null; } String name = netAddress.getHostName(); //get the host address return name; } }