Here you can find the source of getLocalAddress()
public static InetAddress getLocalAddress()
//package com.java2s; //License from project: Apache License import java.net.*; import java.util.Enumeration; import java.util.regex.Pattern; public class Main { public static final String LOCALHOST = "127.0.0.1"; public static final String ANYHOST = "0.0.0.0"; private static final Pattern ADDRESS_PATTERN = Pattern.compile("^\\d{1,3}(\\.\\d{1,3}){3}\\:\\d{1,5}$"); private static final Pattern IP_PATTERN = Pattern.compile("\\d{1,3}(\\.\\d{1,3}){3,5}$"); private static volatile InetAddress LOCAL_ADDRESS = null; public static InetAddress getLocalAddress() { if (LOCAL_ADDRESS != null) return LOCAL_ADDRESS; InetAddress localAddress = getLocalAddress0(); LOCAL_ADDRESS = localAddress;//from w w w .j av a 2 s. c o m return localAddress; } private static InetAddress getLocalAddress0() { InetAddress localAddress = null; try { localAddress = InetAddress.getLocalHost(); if (isValidAddress(localAddress)) { return localAddress; } } catch (Exception e) { // logger.warn("Failed to retriving ip address, " + e.getMessage(), e); } try { Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces(); if (interfaces != null) { while (interfaces.hasMoreElements()) { try { NetworkInterface network = interfaces.nextElement(); if (network.isLoopback() || network.isVirtual() || !network.isUp()) { continue; } Enumeration<InetAddress> addresses = network.getInetAddresses(); while (addresses.hasMoreElements()) { try { InetAddress address = addresses.nextElement(); if (isValidAddress(address)) { return address; } } catch (Exception e) { // logger.warn("Failed to retriving ip address, " + e.getMessage(), e); } } } catch (Exception e) { // logger.warn("Failed to retriving ip address, " + e.getMessage(), e); } } } } catch (Exception e) { // logger.warn("Failed to retriving ip address, " + e.getMessage(), e); } // logger.error("Could not get local host ip address, will use 127.0.0.1 instead."); return localAddress; } public static String getLocalHost() { InetAddress address = getLocalAddress(); return address == null ? LOCALHOST : address.getHostAddress(); } public static boolean isValidAddress(String address) { return ADDRESS_PATTERN.matcher(address).matches(); } private static boolean isValidAddress(InetAddress address) { if (address == null || address.isLoopbackAddress()) return false; String name = address.getHostAddress(); return (name != null && !ANYHOST.equals(name) && !LOCALHOST.equals(name) && IP_PATTERN.matcher(name).matches()); } }