获取主机ip地址

Posted 路过

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取主机ip地址相关的知识,希望对你有一定的参考价值。

  Linux或windows的ip地址

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

/**
 * 
 * @author LiCJ
 *    @date 2017.04.12
 */
public class WebTools {
    /**
     * 获取本地IP地址
     * @return
     * @throws UnknownHostException
     * @throws SocketException
     */
     public static String getLocalIP() throws UnknownHostException, SocketException {
            if (isWindowsOS()) {
                return InetAddress.getLocalHost().getHostAddress();
            } else {
                return getLinuxLocalIp();
            }
        }
     /**
      * 获取本地Host名称
      * @return
      * @throws UnknownHostException
      */
        public static String getLocalHostName() throws UnknownHostException {
            return InetAddress.getLocalHost().getHostName();
        }
     /**
      *  获取Linux下的IP地址
      * @return
      */
    private static String getLinuxLocalIp() {
         String ip = "";
            try {
                for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
                    NetworkInterface intf = en.nextElement();
                    String name = intf.getName();
                    if (!name.contains("docker") && !name.contains("lo")) {
                        for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
                            InetAddress inetAddress = enumIpAddr.nextElement();
                            if (!inetAddress.isLoopbackAddress()) {
                                String ipaddress = inetAddress.getHostAddress().toString();
                                if (!ipaddress.contains("::") && !ipaddress.contains("0:0:") && !ipaddress.contains("fe80")) {
                                    ip = ipaddress;
                                }
                            }
                        }
                    }
                }
            } catch (SocketException ex) {
                ex.printStackTrace();
            }
            return ip;
    }
/**
 * 判断操作系统是否是Windows
 * @return
 */
    private static boolean isWindowsOS() {
        boolean isWindowsOS = false;
        String osName = System.getProperty("os.name");
        if (osName.toLowerCase().indexOf("windows") > -1) {
            isWindowsOS = true;
        }
        return isWindowsOS;
    }
}

 

以上是关于获取主机ip地址的主要内容,如果未能解决你的问题,请参考以下文章

java代码实现由request请求消息获取远处发送请求的用户主机的内网IP地址和外网IP地址

如何从主机获取 Docker 容器的 IP 地址

如何获取局域网内所有IP地址 java代码

获取远程主机的IP地址

DHCP(动态主机获取IP地址)

Linux 下JAVA程序获取主机IP问题