码迷,mamicode.com
首页 > 编程语言 > 详细

Java获取系统IP地址

时间:2015-08-05 12:51:13      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:获取ip

在一个项目中如果你想获取系统的ip地址那么可能许多同学在想那是多么容易,但是如果在多种操作系统貌似就不那么简单了,下面看看怎么获取系统的ip地址的。
package easyway.tbs.commons; 
 
import java.net.InetAddress; 
import java.net.NetworkInterface; 
import java.net.SocketException; 
import java.net.UnknownHostException; 
import java.util.Enumeration; 
import java.util.Properties; 
import org.apache.log4j.Logger; 
/**
 * 
 * 本机系统信息
 * @author longgangbai
 *
 */ 
public final class SystemHelper { 
    private static final Logger logger = Logger.getLogger(SystemHelper.class); 
 
    //获得系统属性集   
    public static Properties props=System.getProperties(); 
    //操作系统名称 
    public static String OS_NAME=getPropertery("os.name"); 
    //行分页符 
    public static String OS_LINE_SEPARATOR=getPropertery("line.separator"); 
    //文件分隔符号 
    public static String OS_FILE_SEPARATOR=getPropertery("file.separator"); 
     
    /**
     * 
     * 根据系统的类型获取本服务器的ip地址
     * 
     * InetAddress inet = InetAddress.getLocalHost();
     * 但是上述代码在Linux下返回127.0.0.1。
     * 主要是在linux下返回的是/etc/hosts中配置的localhost的ip地址,
     * 而不是网卡的绑定地址。后来改用网卡的绑定地址,可以取到本机的ip地址:):
     * @throws UnknownHostException 
     */ 
    public static InetAddress getSystemLocalIp() throws UnknownHostException{ 
        InetAddress inet=null; 
        String osname=getSystemOSName(); 
        try { 
            //针对window系统 
            if(osname.equalsIgnoreCase("Windows XP")){ 
                    inet=getWinLocalIp(); 
            //针对linux系统 
            }else if(osname.equalsIgnoreCase("Linux")){ 
                    inet=getUnixLocalIp(); 
            } 
            if(null==inet){ 
                throw new UnknownHostException("主机的ip地址未知"); 
            } 
        }catch (SocketException e) { 
            logger.error("获取本机ip错误"+e.getMessage()); 
            throw new UnknownHostException("获取本机ip错误"+e.getMessage()); 
        } 
        return inet; 
    } 
    /**
     * 获取FTP的配置操作系统
     * @return
     */ 
    public static String getSystemOSName() { 
         //获得系统属性集   
        Properties props=System.getProperties(); 
        //操作系统名称 
        String osname=props.getProperty("os.name");   
        if(logger.isDebugEnabled()){ 
            logger.info("the ftp client system os Name "+osname); 
        } 
        return osname; 
    } 
    /**
     * 获取属性的值
     * @param propertyName
     * @return
     */ 
    public static String getPropertery(String propertyName){ 
        return props.getProperty(propertyName); 
    } 
     
     
    /**
     * 获取window 本地ip地址
     * @return
     * @throws UnknownHostException
     */ 
    private static InetAddress getWinLocalIp() throws UnknownHostException{ 
        InetAddress inet = InetAddress.getLocalHost();      
        System.out.println("本机的ip=" + inet.getHostAddress());  
         return inet; 
    } 
    /**
     * 
     * 可能多多个ip地址只获取一个ip地址
     * 获取Linux 本地IP地址
     * @return
     * @throws SocketException 
     */ 
    private static InetAddress getUnixLocalIp() throws SocketException{ 
            Enumeration<NetworkInterface> netInterfaces = NetworkInterface.getNetworkInterfaces(); 
            InetAddress ip = null;  
            while(netInterfaces.hasMoreElements())      
            {      
                NetworkInterface ni= (NetworkInterface)netInterfaces.nextElement();      
                ip=(InetAddress) ni.getInetAddresses().nextElement();      
                if( !ip.isSiteLocalAddress()      
                        && !ip.isLoopbackAddress()      
                        && ip.getHostAddress().indexOf(":")==-1)      
                {      
                    return ip; 
                }      
                else     
                {      
                    ip=null;      
                }      
            }    
        return null; 
    } 
    /**
     * 
     * 获取当前运行程序的内存信息
     * @return
     */ 
    public static final String getRAMinfo() { 
        Runtime rt = Runtime.getRuntime(); 
        return "RAM: " + rt.totalMemory() + " bytes total, " + rt.freeMemory() + " bytes free."; 
    } 
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java获取系统IP地址

标签:获取ip

原文地址:http://blog.csdn.net/taoshengyijiuzt/article/details/47295223

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!