zoukankan      html  css  js  c++  java
  • Java 工具类 IpUtil

    Java 工具类 IpUtil - 获取本机所有 IP 地址,LocalHost 对应地址 IP

    IP 工具类

    源代码:

    /**
     * <p>
     *
     * @author XiaoPengwei
     * @since 2019-07-20
     */
    import java.net.Inet4Address;
    import java.net.InetAddress;
    import java.net.NetworkInterface;
    import java.net.SocketException;
    import java.net.UnknownHostException;
    import java.util.Enumeration;
    
    
    public class IpUtil {
    
        public static void main(String[] args) {
    
            IpUtil testGetIP = new IpUtil();
    
            System.out.println("Your LocalHost IP(ipv4) is:");
    
            System.out.println(testGetIP.getIP());
    
            System.out.println("
    Here are all your IPS:");
            testGetIP.printAllIp();
        }
    
        /**
         * Fond LocalHost ipv4
         *
         * @return java.lang.String
         */
        public String getIP() {
            try {
                // 根据 hostname 找 ip
                InetAddress address = InetAddress.getLocalHost();
                if (address.isLoopbackAddress()) {
                    Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces();
                    while (allNetInterfaces.hasMoreElements()) {
                        NetworkInterface netInterface = allNetInterfaces.nextElement();
                        Enumeration<InetAddress> addresses = netInterface.getInetAddresses();
                        while (addresses.hasMoreElements()) {
                            InetAddress ip = addresses.nextElement();
                            if (!ip.isLinkLocalAddress() && !ip.isLoopbackAddress() && ip instanceof Inet4Address) {
                                return ip.getHostAddress();
                            }
                        }
                    }
                }
                return address.getHostAddress();
            } catch (UnknownHostException | SocketException e) {
                e.printStackTrace();
                return null;
            }
        }
    
        /**
         * Find all network interfaces
         */
        public void printAllIp() {
            try {
                Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces();
                while (allNetInterfaces.hasMoreElements()) {
                    NetworkInterface netInterface = allNetInterfaces.nextElement();
    
                    // Remove loopback interface, sub-interface, unrun and interface
                    if (netInterface.isLoopback() || netInterface.isVirtual() || !netInterface.isUp()) {
                        continue;
                    }
    
                    Enumeration<InetAddress> addresses = netInterface.getInetAddresses();
                    while (addresses.hasMoreElements()) {
                        InetAddress ip = addresses.nextElement();
                        if (ip != null) {
    
                            System.out.println("ip = " + ip.getHostAddress());
                            // ipv4
                            if (ip instanceof Inet4Address) {
                                System.out.println("ipv4 = " + ip.getHostAddress());
    
                                if (!ip.getHostAddress().startsWith("192") && !ip.getHostAddress().startsWith("10") && !ip.getHostAddress().startsWith("172")) {
                                    // Intranet
                                    ip.getHostAddress();
                                }
                            }
                        }
                    }
                }
            } catch (SocketException e) {
                System.err.println("[Error] can't get host ip address" + e.getMessage());
            }
        }
    }
    
  • 相关阅读:
    mysql 时间函数
    Excel名称管理
    Unicode中文和特殊字符的编码范围
    带有历史数据置顶的id列表查询
    汉字表示范围
    ASP.NET模拟http进行GET/POST请求
    ASP.NET AES-128-CBC加密解密(与php通讯)
    dapper.net 获取分页存储过程返回的多结果集
    微信网页版抓包登录
    js添加/移除/阻止事件
  • 原文地址:https://www.cnblogs.com/xpwi/p/11217835.html
Copyright © 2011-2022 走看看