package com.techsun.hennessy.common.util;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;
/**
* 获取服务器IP
*/
public class GetHostIP {
/**
* 判断是windows还是Linux
* @return
*/
private static boolean isWindowOS() {
boolean isWindowOS = false;
String osName = System.getProperty("os.name");
if(osName.toLowerCase().indexOf("windows") > -1) {
isWindowOS = true;
}
return isWindowOS;
}
private static InetAddress getInetAddress() {
InetAddress inetAddress = null;
try {
//如果是windows操作系统
if (isWindowOS()) {
inetAddress = InetAddress.getLocalHost();
} else {
boolean bFindIP = false;
//定义一个内容都是NetworkInterface的枚举对象
Enumeration<NetworkInterface> netInterfaces = (Enumeration<NetworkInterface>)
NetworkInterface.getNetworkInterfaces();
//如果枚举对象里面还有内容(NetworkInterface)
while (netInterfaces.hasMoreElements()) {
if (bFindIP) {
break;
}
//获取下一个内容(NetworkInterface)
NetworkInterface ni = (NetworkInterface) netInterfaces.nextElement();
//----------特定情况,可以考虑用ni.getName判断
//遍历所有IP
Enumeration<InetAddress> ips = ni.getInetAddresses();
while (ips.hasMoreElements()) {
inetAddress = (InetAddress) ips.nextElement();
if (inetAddress.isSiteLocalAddress() //属于本地地址
&& !inetAddress.isLoopbackAddress() //不是回环地址
&& inetAddress.getHostAddress().indexOf(":") == -1) { //地址里面没有:号
bFindIP = true; //找到了地址
break; //退出循环
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return inetAddress;
}
public static String getLocalIP() {
return getInetAddress().getHostAddress();
}
// public static void main(String[] args){
//
// System.out.println(getLocalIP());
// }
}
亲测,有用!