您的位置:

Java获取本地IP

引言

IP地址在网络编程中起着非常重要的作用,Java提供了很多方法来获取本地IP地址。

正文

一、使用InetAddress方法获取本地IP

Java中提供了InetAddress类来获取IP地址。它是用来表示不同类型的网络地址的类,包括IP地址。我们可以通过InetAddress.getLocalHost()方法获取本地主机的IP地址和主机名。

public static void main(String[] args) throws UnknownHostException {
    InetAddress inetAddress = InetAddress.getLocalHost();
    System.out.println("本机IP地址:" + inetAddress.getHostAddress());
    System.out.println("本机主机名:" + inetAddress.getHostName());
}

执行结果如下:

本机IP地址:192.168.1.111
本机主机名:localhost

需要注意的是,在InetAddress的实现中,getLocalHost()方法会经常去访问DNS服务器,所以会有一点点耗时。

二、使用NetworkInterface方法获取本地IP

除了使用InetAddress类,Java还提供了NetworkInterface类来获取本地IP地址。NetworkInterface类提供了一些方法,可以用来获取本机所有网络接口的信息,包括IP地址和MAC地址。

public static void main(String[] args) throws SocketException, UnknownHostException {
    Enumeration
    allNetInterfaces = NetworkInterface.getNetworkInterfaces();
    InetAddress ip = null;
    while (allNetInterfaces.hasMoreElements()) {
        NetworkInterface netInterface = allNetInterfaces.nextElement();
        Enumeration
     addresses = netInterface.getInetAddresses();
        while (addresses.hasMoreElements()) {
            ip = addresses.nextElement();
            if (ip != null && ip instanceof Inet4Address) {
                System.out.println("本机IP地址:" + ip.getHostAddress());
            }
        }
    }
}

    
   

执行结果如下:

本机IP地址:127.0.0.1
本机IP地址:192.168.1.111

三、结论

通过以上两种方法,我们可以很方便地获取本机的IP地址。如果只需要获取一个IP地址,使用InetAddress类就足够了。如果需要获取所有的IP地址,或者需要获取网络接口的信息,那么就要使用NetworkInterface类。