Java获取主机IP地址,自动区分Windows和Linux

王朝学院·作者佚名  2009-12-20  
宽屏版  字体: |||超大  

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);

}

}

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wts/archive/2009/12/17/5027168.aspx

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有