private static InetAddress getLocalHost() throws UnknownHostException, SocketException {
        // Windows Vista returns the IPv6 InetAddress using this method, which is not
        // particularly useful as it has no name or useful address, just "0:0:0:0:0:0:0:1".
        // That is why windows should be treated differently to linux/unix and use the
        // default way of getting the localhost.
        String osName = System.getProperty("os.name");
        if ((osName != null) && osName.toLowerCase().contains("windows")) {
            return InetAddress.getLocalHost();
        }

        InetAddress loopback = null;
        Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces();
        while (e.hasMoreElements()) {
            NetworkInterface i = e.nextElement();
            if (i.isUp() && !i.isPointToPoint()) {
                Enumeration<InetAddress> ie = i.getInetAddresses();
                while (ie.hasMoreElements()) {
                    InetAddress lch = ie.nextElement();
                    if (lch.isLoopbackAddress()) {
                        loopback = lch;
                    } else if (!lch.isLinkLocalAddress()) {
                        return lch;
                    }
                }
            }
        }
        return loopback;
    }
private static InetAddress getLocalHost() throws UnknownHostException, SocketException {
        
        
        
        
        String osName = System.getProperty("os.name");
        if ((osName != null) && osName.toLowerCase().contains("windows")) {
            return InetAddress.getLocalHost();
        }

        InetAddress loopback = null;
        Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces();
        while (e.hasMoreElements()) {
            NetworkInterface i = e.nextElement();
            if (i.isUp() && !i.isPointToPoint()) {
                Enumeration<InetAddress> ie = i.getInetAddresses();
                while (ie.hasMoreElements()) {
                    InetAddress lch = ie.nextElement();
                    if (lch.isLoopbackAddress()) {
                        loopback = lch;
                    } else if (!lch.isLinkLocalAddress()) {
                        return lch;
                    }
                }
            }
        }
        return loopback;
    }
private static InetAddress getLocalHost ( ) throws UnknownHostException , SocketException { // Windows Vista returns the IPv6 InetAddress using this method, which is not // particularly useful as it has no name or useful address, just "0:0:0:0:0:0:0:1". // That is why windows should be treated differently to linux/unix and use the // default way of getting the localhost. String osName = System . getProperty ( "os.name" ) ; if ( ( osName != null ) && osName . toLowerCase ( ) . contains ( "windows" ) ) { return InetAddress . getLocalHost ( ) ; } InetAddress loopback = null ; Enumeration < NetworkInterface > e = NetworkInterface . getNetworkInterfaces ( ) ; while ( e . hasMoreElements ( ) ) { NetworkInterface i = e . nextElement ( ) ; if ( i . isUp ( ) && ! i . isPointToPoint ( ) ) { Enumeration < InetAddress > ie = i . getInetAddresses ( ) ; while ( ie . hasMoreElements ( ) ) { InetAddress lch = ie . nextElement ( ) ; if ( lch . isLoopbackAddress ( ) ) { loopback = lch ; } else if ( ! lch . isLinkLocalAddress ( ) ) { return lch ; } } } } return loopback ; }
Smarter way to get localhost than InetAddress.getLocalHost.  See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4665037
Smarter way to get localhost than InetAddress . getLocalHost . See http : // bugs . sun . com / bugdatabase / view_bug . do?bug_id = 4665037