您的位置:

利用Java获取本机IP地址

引言

获取本机IP地址是我们在日常开发中的一个基本需求,无论是做网络编程还是构建分布式系统都需要获取本机的IP地址。在Java中,我们可以用不同的方式获取本机IP地址。本文将会介绍用Java编程获取本机IP地址的方法及其实现细节。

正文

1、使用InetAddress类获取本机IP地址

Java提供了InetAddress类来获取本机的IP地址。该类是Java.net包中一个常用的类,它代表着IP地址对象,可以实现IP地址的解析、查询等功能。下面是获取本机IP地址的代码示例:
import java.net.InetAddress;
import java.net.UnknownHostException;

public class GetLocalIP {
    public static void main(String[] args) {
        try {
            InetAddress address = InetAddress.getLocalHost();
            System.out.println("IP Address: " + address.getHostAddress());
        } catch (UnknownHostException ex) {
            ex.printStackTrace();
        }
    }
}

2、使用NetworkInterface类获取本机IP地址

除了使用InetAddress类获取本机IP地址,我们还可以使用NetworkInterface类来获取。该类提供了一系列的API,使我们能够枚举出实现某个网络接口的IP地址。具体示例如下:
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;

public class GetLocalIP {
    public static void main(String[] args) {
        try {
            Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();
            while (networkInterfaces.hasMoreElements()) {
                NetworkInterface networkInterface = networkInterfaces.nextElement();
                Enumeration
    inetAddresses = networkInterface.getInetAddresses();
                while (inetAddresses.hasMoreElements()) {
                    InetAddress inetAddress = inetAddresses.nextElement();
                    if (!inetAddress.isLinkLocalAddress()) {
                        System.out.println("IP Address: " + inetAddress.getHostAddress());
                    }
                }
            }
        } catch (SocketException ex) {
            ex.printStackTrace();
        }
    }
}

   
  

3、使用System.getProperty方法获取本机IP地址

另外,我们还可以使用System.getProperty方法来获取本机IP地址。该方法返回当前正在运行的Java虚拟机的系统属性。其中,“java.net.preferIPv4Stack”用于指定IPv4地址。如果不指定该属性,则Java的网络库会自动优先使用IPv6。具体代码如下:
import java.net.InetAddress;
import java.net.UnknownHostException;

public class GetLocalIP {
    public static void main(String[] args) {
        try {
            String preferIPv4Stack = System.getProperty("java.net.preferIPv4Stack");
            if (preferIPv4Stack == null) {
                System.setProperty("java.net.preferIPv4Stack", "true");
            }
            InetAddress address = InetAddress.getLocalHost();
            System.out.println("IP Address: " + address.getHostAddress());
        } catch (UnknownHostException ex) {
            ex.printStackTrace();
        }
    }
}

总结

本文介绍了三种Java获取本机IP地址的方法,包括使用InetAddress类、NetworkInterface类和System.getProperty方法。这些方法各有特点,可以根据具体的需求和实际情况选择使用。无论使用哪种方法,都可以很方便地获取本机IP地址,为网络编程和分布式系统开发提供便利。