package com.jd.bdp.phenix.commons.utils;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.List;
/**
* 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;
}
}
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.List;
/**
* 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;
}
}