原文連接:https://gist.github.com/pfmiles/9f7273b12b4b486e2e9cjava
package test; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumeration; import java.util.HashSet; import java.util.Iterator; import java.util.Set; /** * 獲取本地ip的工具 * * @author pf-miles * @since 2014-11-25 */ public class LocalIpAddressUtil { /** * 獲取本地ip地址,有可能會有多個地址, 如有多個網卡則會蒐集多個網卡的ip地址 */ public static Set<InetAddress> resolveLocalAddresses() { Set<InetAddress> addrs = new HashSet<InetAddress>(); Enumeration<NetworkInterface> ns = null; try { ns = NetworkInterface.getNetworkInterfaces(); } catch (SocketException e) { // ignored... } while (ns != null && ns.hasMoreElements()) { NetworkInterface n = ns.nextElement(); Enumeration<InetAddress> is = n.getInetAddresses(); while (is.hasMoreElements()) { InetAddress i = is.nextElement(); if (!i.isLoopbackAddress() && !i.isLinkLocalAddress() && !i.isMulticastAddress() && !isSpecialIp(i.getHostAddress())) addrs.add(i); } } return addrs; } public static Set<String> resolveLocalIps() { Set<InetAddress> addrs = resolveLocalAddresses(); Set<String> ret = new HashSet<String>(); for (InetAddress addr : addrs) ret.add(addr.getHostAddress()); return ret; } private static boolean isSpecialIp(String ip) { if (ip.contains(":")) return true; if (ip.startsWith("127.")) return true; if (ip.startsWith("169.254.")) return true; if (ip.equals("255.255.255.255")) return true; return false; } }