获取本机IP的方法
public static String[] getAllLocalIP() {String[] localServers = null;try {InetAddress addr = InetAddress.getLocalHost();
String hostName = addr.getHostName().toString();
// 获取本机ipInetAddress[] ipsAddr = InetAddress.getAllByName(hostName);localServers = new String[ipsAddr.length];
for (int i = 0; i < ipsAddr.length; i++) {
if (ipsAddr[i] != null) {
localServers[i] = ipsAddr[i].getHostAddress().toString();
}
}
} catch (Exception e) {}
return localServers;}
这种方法在Windows下是没问题的,但是在Linux下运行的时候很有可能会是127.0.0.1,修改host虽然可以解决,但并不是个明智之举。下面这种方法在Windows和Linux下都可以获得正确的IP:
/*** 取得本机IP(可能有多个网卡,Linux和Windows都适用)** @return List
*/
public static List
getAllLocalIP() { List
localServers = new ArrayList (); try {Enumeration
netInterfaces = NetworkInterface .getNetworkInterfaces();
InetAddress ip = null;while (netInterfaces.hasMoreElements()) {NetworkInterface ni = netInterfaces.nextElement();
Enumeration
address = ni.getInetAddresses(); while (address.hasMoreElements()) {ip = address.nextElement();
if (!ip.isLoopbackAddress()&& ip
.getHostAddress()
.matches(
"((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)")) {// System.out.println("非回环ip: " +// ip.getHostAddress());localServers.add(ip.getHostAddress());}
}
}
} catch (SocketException e) {e.printStackTrace();
}
return localServers;}
浙公网安备 33010602011771号