MDA/MDD/TDD/DDD/DDDDDDD
posts - 536, comments - 111, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

如何用 Java 获取系统 IP?

Posted on 2015-03-02 06:29 leekiang 阅读(657) 评论(0)  编辑  收藏 所属分类: java
参考dubbo里的NetUtils类

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;
import java.util.regex.Pattern;

public class GetIP {
public static void main(String[] args) {
System.out.println(GetIP.getLocalAddress0().getHostAddress());
}
public static InetAddress getLocalAddress0() {
        InetAddress localAddress = null;
        try {
            localAddress = InetAddress.getLocalHost();
            if (isValidAddress(localAddress)) {
                return localAddress;
            }
        } catch (Throwable e) {
            System.out.println("Failed to retriving ip address, " + e.getMessage());
        }
        try {
            Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
            if (interfaces != null) {
                while (interfaces.hasMoreElements()) {
                    try {
                        NetworkInterface network = interfaces.nextElement();
                        Enumeration<InetAddress> addresses = network.getInetAddresses();
                        if (addresses != null) {
                            while (addresses.hasMoreElements()) {
                                try {
                                    InetAddress address = addresses.nextElement();
                                    if (isValidAddress(address)) {
                                        return address;
                                    }
                                } catch (Throwable e) {
                                    System.out.println("Failed to retriving ip address, " + e.getMessage());
                                }
                            }
                        }
                    } catch (Throwable e) {
                        System.out.println("Failed to retriving ip address, " + e.getMessage());
                    }
                }
            }
        } catch (Throwable e) {
            System.out.println("Failed to retriving ip address, " + e.getMessage());
        }
        System.out.println("Could not get local host ip address, will use 127.0.0.1 instead.");
        return localAddress;
    }
    private static boolean isValidAddress(InetAddress address) {
        if (address == null || address.isLoopbackAddress())
            return false;
        String name = address.getHostAddress();
        return (name != null
                && ! ANYHOST.equals(name)
                && ! LOCALHOST.equals(name)
                && IP_PATTERN.matcher(name).matches());
    }
    
    public static final String LOCALHOST = "127.0.0.1";

    public static final String ANYHOST = "0.0.0.0";
    
    private static final Pattern IP_PATTERN = Pattern.compile("\\d{1,3}(\\.\\d{1,3}){3,5}$");
}


只有注册用户登录后才能发表评论。


网站导航: