importjava.net.InetAddress;importjava.net.NetworkInterface;importjava.net.SocketException;importjava.net.UnknownHostException;importjava.util.ArrayList;importjava.util.Enumeration;importjava.util.List;/*** 本地主机工具类
*
*@authorzhi
*@since2019年11月13日09:04:36
**/
public classLocalHostUtil {/*** 获取主机名称
*
*@return*@throwsUnknownHostException*/
public static String getHostName() throwsUnknownHostException {returnInetAddress.getLocalHost().getHostName();
}/*** 获取系统首选IP
*
*@return*@throwsUnknownHostException*/
public static String getLocalIP() throwsUnknownHostException {returnInetAddress.getLocalHost().getHostAddress();
}/*** 获取所有网卡IP,排除回文地址、虚拟地址
*
*@return*@throwsSocketException*/
public static String[] getLocalIPs() throwsSocketException {
List list = new ArrayList<>();
Enumeration enumeration =NetworkInterface.getNetworkInterfaces();while(enumeration.hasMoreElements()) {
NetworkInterface intf=enumeration.nextElement();if (intf.isLoopback() || intf.isVirtual()) { // continue;
}
Enumeration inets =intf.getInetAddresses();while(inets.hasMoreElements()) {
InetAddress addr=inets.nextElement();if (addr.isLoopbackAddress() || !addr.isSiteLocalAddress() ||addr.isAnyLocalAddress()) {continue;
}
list.add(addr.getHostAddress());
}
}return list.toArray(new String[0]);
}/*** 判断操作系统是否是Windows
*
*@return
*/
public static booleanisWindowsOS() {boolean isWindowsOS = false;
String osName= System.getProperty("os.name");if (osName.toLowerCase().indexOf("windows") > -1) {
isWindowsOS= true;
}returnisWindowsOS;
}public static voidmain(String[] args) {try{
System.out.println("主机是否为Windows系统:" +LocalHostUtil.isWindowsOS());
System.out.println("主机名称:" +LocalHostUtil.getHostName());
System.out.println("系统首选IP:" +LocalHostUtil.getLocalIP());
System.out.println("系统所有IP:" + String.join(",", LocalHostUtil.getLocalIPs()));
}catch(UnknownHostException e) {
}catch(Exception e) {
e.printStackTrace();
}
}
}