Java IP Address Get getLocalIP()

Here you can find the source of getLocalIP()

Description

get Local IP

License

Open Source License

Declaration

public static String getLocalIP() 

Method Source Code

//package com.java2s;
/**/*from ww w  .  jav  a 2  s  .  co m*/
 * Tencent is pleased to support the open source community by making Tars available.
 *
 * Copyright (C) 2016 THL A29 Limited, a Tencent company. All rights reserved.
 *
 * Licensed under the BSD 3-Clause License (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * https://opensource.org/licenses/BSD-3-Clause
 *
 * Unless required by applicable law or agreed to in writing, software distributed
 * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations under the License.
 */

import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.UnknownHostException;
import java.util.Enumeration;

public class Main {
    private static String cacheIP = null;
    private static final Object cacheLock = new Object();

    public static String getLocalIP() {
        if (cacheIP == null) {
            synchronized (cacheLock) {
                if (cacheIP == null) {
                    try {
                        cacheIP = getLocalIPByNetworkInterface();
                    } catch (Exception e) {
                    }
                    if (cacheIP == null) {
                        try {
                            cacheIP = InetAddress.getLocalHost().getHostAddress();
                        } catch (UnknownHostException e) {
                            cacheIP = "0.0.0.0";
                        }
                    }
                }
            }
        }
        return cacheIP;
    }

    private static String getLocalIPByNetworkInterface() throws Exception {
        Enumeration<NetworkInterface> enumeration = NetworkInterface.getNetworkInterfaces();
        while (enumeration.hasMoreElements()) {
            NetworkInterface networkInterface = enumeration.nextElement();
            if (networkInterface.isUp() && !networkInterface.isVirtual() && !networkInterface.isLoopback()) {
                Enumeration<InetAddress> addresses = networkInterface.getInetAddresses();
                while (addresses.hasMoreElements()) {
                    InetAddress inetAddress = addresses.nextElement();
                    if (inetAddress instanceof Inet4Address) {
                        return inetAddress.getHostAddress();
                    }
                }
            }
        }
        return null;
    }
}

Related

  1. getLocalIP()
  2. getLocalIP()
  3. getLocalIP()
  4. getLocalIp()
  5. getLocalIp()
  6. getLocalIp()
  7. getLocalIp()
  8. getLocalIP()
  9. getLocalIP()