自研服务治理框架----获取本机IP地址

    public String getServerIp() {  
        if (serverIp != null) {  
            return serverIp;  
        }  
        // 一个主机有多个网络接口  
        try {  
            Enumeration<NetworkInterface> netInterfaces = NetworkInterface.getNetworkInterfaces();  
            while (netInterfaces.hasMoreElements()) {  
                NetworkInterface netInterface = netInterfaces.nextElement();  
                // 每个网络接口,都会有多个"网络地址",比如一定会有lookback地址,会有siteLocal地址等.以及IPV4或者IPV6 .  
                Enumeration<InetAddress> addresses = netInterface.getInetAddresses();  
                while (addresses.hasMoreElements()) {  
                    InetAddress address = addresses.nextElement();  
                    if(address instanceof Inet6Address){  
                        continue;  
                    }  
                    if (address.isSiteLocalAddress() && !address.isLoopbackAddress()) {  
                        serverIp = address.getHostAddress();  
                        logger.info("resolve server ip :"+ serverIp);  
                        continue;  
                    }  
                }  
            }  
        } catch (SocketException e) {  
            e.printStackTrace();  
        }  
        return serverIp;  
    }  

猜你喜欢

转载自my.oschina.net/u/1000241/blog/1785710
今日推荐