当前位置:编程学习 > JAVA >>

Java获取系统IP地址

在一个项目中如果你想获取系统的ip地址那么可能许多同学在想那是多么容易,但是如果在多种操作系统貌似就不那么简单了,下面看看怎么获取系统的ip地址的。
Java代码 
package easyway.tbs.commons; 
 
import java.net.InetAddress; 
import java.net.NetworkInte易做图ce; 
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<NetworkInte易做图ce> netInte易做图ces = NetworkInte易做图ce.getNetworkInte易做图ces(); 
            InetAddress ip = null;  
            while(netInte易做图ces.hasMoreElements())      
            {      
                NetworkInte易做图ce ni= (NetworkInte易做图ce)netInte易做图ces.nextElement();      
                ip=(InetAddress) ni.getInetAddresses().nextElement();      
                if( !ip.isSiteLocalAddress()      
    &nbs

补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,