?import java.net.InetAddress; import java.net.NetworkInterface; import java.util.Enumeration;
public class OSUtil {
?/** ? * 判断当前操作是否Windows. ? * ? * @return true---是Windows操作系统 ? */ ?public static boolean isWindowsOS(){ ??boolean isWindowsOS = false; ??String osName = System.getProperty("os.name"); ??if(osName.toLowerCase().indexOf("windows")>-1){ ???isWindowsOS = true; ??} ??return isWindowsOS; ?} ? ?/** ? * 获取本机IP地址,并自动区分Windows还是Linux操作系统 ? * @return String ? */ ?public static String getLocalIP(){ ??String sIP = ""; ??InetAddress ip = null;? ??try { ???//如果是Windows操作系统 ???if(isWindowsOS()){ ????ip = InetAddress.getLocalHost(); ???} ???//如果是Linux操作系统 ???else{ ????boolean bFindIP = false; ????Enumeration<NetworkInterface> netInterfaces = (Enumeration<NetworkInterface>) NetworkInterface ??????.getNetworkInterfaces(); ????while (netInterfaces.hasMoreElements()) { ?????if(bFindIP){ ??????break; ?????} ?????NetworkInterface ni = (NetworkInterface) netInterfaces.nextElement(); ?????//----------特定情况,可以考虑用ni.getName判断 ?????//遍历所有ip ?????Enumeration<InetAddress> ips = ni.getInetAddresses(); ?????while (ips.hasMoreElements()) { ??????ip = (InetAddress) ips.nextElement(); ??????if( ip.isSiteLocalAddress()?? ???????????????? && !ip.isLoopbackAddress()?? //127.开头的都是lookback地址 ???????????????? && ip.getHostAddress().indexOf(":")==-1){ ???????? ?bFindIP = true; ???????????? break;?? ???????? } ?????}
????} ???} ??} ??catch (Exception e) { ???e.printStackTrace(); ??}?
??if(null != ip){ ???sIP = ip.getHostAddress(); ??} ??return sIP; ?} ?//如果不能满足要求,请留言并说明情况 ?public static void main(String[] args) { ??String serverIP = OS.getLocalIP(); ??System.out.println("serverIP:::" + serverIP); ?} } (编辑:北几岛)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|