您的位置:首页 > 运维架构 > Linux

获取本机ip地址,并自动区分Windows还是linux操作系统

2017-06-12 17:12 405 查看
声明:本文纯属个人随手笔记,如果对您有参考价值我十分开心,如果有存在错误,或者有更好的解决办法也麻烦您留言告诉我,大家共同成长,切勿恶言相。 欢迎加入资源共享QQ群:275343679,一起发现知识、了解知识、学习知识、分享知识。个人网站: www.blueskyui.cn

================================================================================

/**

    * 获取本机ip地址,并自动区分Windows还是linux操作系统

   * @return String
   */
public static String getLocalIP(String cip){
    String sIP = "";
    InetAddress ip = null;
    try {
     //如果是Windows操作系统
     if(isWindowsOS()){
     ip = InetAddress.getLocalHost();
     } else{
     //如果是Linux操作系统
      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) {
    logger.error("get ip error.",e);
    }

    if(null != ip){
    sIP = ip.getHostAddress();
    }
    logger.info(String.format("config IP:%s === server IP:%s ",cip,sIP));    
    return sIP;

  }

/**
 * 判断系统
 *
 * @return String
 */
public static boolean isWindowsOS(){
   boolean isWindowsOS = false;
   String osName = System.getProperty("os.name");
   if(osName.toLowerCase().indexOf("windows")>-1){
    isWindowsOS = true;
   }
   return isWindowsOS;
 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: