/**
* Created by gaochenghao on 15-1-13.
*/
public class IPFinder {
/**
* 擷取本機ip地址,並自動區分Windows還是linux作業系統
* @return String
*/
public static String getIP() throws Exception {
List<String> ipList = new ArrayList<String>();
InetAddress ip;
//如果是Windows作業系統
if (isWindowsOS()) {
ip = InetAddress.getLocalHost();
return ip.getHostAddress();
} else {//如果是Linux作業系統
Enumeration<NetworkInterface> netInterfaces = NetworkInterface.getNetworkInterfaces();
while (netInterfaces.hasMoreElements()) {
NetworkInterface ni = netInterfaces.nextElement();
//----------特定情況,可以考慮用ni.getName判斷
//遍曆所有ip
Enumeration<InetAddress> ips = ni.getInetAddresses();
while (ips.hasMoreElements()) {
ip = ips.nextElement();
System.out.println("isSiteLocalAddress:" + ip.isSiteLocalAddress() +
" isLoopbackAddress:" + ip.isLoopbackAddress() +
" HostAddress:" + ip.getHostAddress()
);
if (ip.isSiteLocalAddress()
&& !ip.isLoopbackAddress() //127.開頭的都是lookback地址
&& ip.getHostAddress().indexOf(":") == -1) {
ipList.add(ip.getHostAddress());
}
}
}
}
System.out.println(".............your computer ip list is :" + ipList);
if (ipList.size() == 0) {
throw new Exception("Can't find this computer IP address Exception.");
}
Collections.sort(ipList);
return ipList.get(0);
}
public static void main(String[] args) {
try {
System.out.println("get ip is:" + getIP());
} catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* 獲得主機IP
* @return String
*/
public static boolean isWindowsOS() {
boolean isWindowsOS = false;
String osName = System.getProperty("os.name");
System.out.println("........your os Name is :" + osName);
if (osName.toLowerCase().indexOf("windows") > -1) {
isWindowsOS = true;
}
return isWindowsOS;
}
}