package hope.ipaddress.demo; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumeration; /** * 获取当前服务器IP * @author hp * */ public class IpDemo { /** * @param args */ public static void main(String[] args) { System.out.println(getMyIp()); } @SuppressWarnings("rawtypes") public static String getMyIp() { String localip = null;// 本地IP,如果没有配置外网IP则返回它 String netip = null;// 外网IP try { Enumeration netInterfaces = NetworkInterface.getNetworkInterfaces(); InetAddress ip = null; boolean finded = false;// 是否找到外网IP while (netInterfaces.hasMoreElements() && !finded) { NetworkInterface ni = (NetworkInterface) netInterfaces.nextElement(); Enumeration address = ni.getInetAddresses(); while (address.hasMoreElements()) { ip = (InetAddress) address.nextElement(); if (!ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) {// 外网IP netip = ip.getHostAddress(); finded = true; break; } else if (ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) {// 内网IP localip = ip.getHostAddress(); } } } } catch (SocketException e) { e.printStackTrace(); } if (netip != null && !"".equals(netip)) { return netip; } else { return localip; } } }
原文:https://www.cnblogs.com/remember-forget/p/9272199.html