📜  使用Java获取您自己的设备 IP 地址(1)

📅  最后修改于: 2023-12-03 14:49:48.696000             🧑  作者: Mango

使用 Java 获取您自己的设备 IP 地址

在 Java 中,我们可以通过以下几种方式来获取本机的 IP 地址:

1. 使用 InetAddress

使用 InetAddress 类中的 getLocalHost() 方法来获取本机的 IP 地址。

import java.net.InetAddress;
import java.net.UnknownHostException;

public class GetIPAddress {
    public static void main(String[] args) {
        try {
            InetAddress address = InetAddress.getLocalHost();
            System.out.println("IP 地址为:" + address.getHostAddress());
        } catch (UnknownHostException e) {
            System.out.println("无法获取本机 IP 地址");
            e.printStackTrace();
        }
    }
}
2. 使用 NetworkInterface

使用 NetworkInterface 类中的 getNetworkInterfaces() 方法来获取本机所有的网络接口信息,然后遍历网络接口,找到与本机对应的 IP 地址。

import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;

public class GetIPAddress {
    public static void main(String[] args) {
        try {
            Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
            while (interfaces.hasMoreElements()) {
                NetworkInterface currentInterface = interfaces.nextElement();
                if (currentInterface.isUp() && !currentInterface.isLoopback()) {
                    Enumeration<InetAddress> addresses = currentInterface.getInetAddresses();
                    while (addresses.hasMoreElements()) {
                        InetAddress address = addresses.nextElement();
                        if (address.getHostAddress().indexOf(":") == -1) {
                            System.out.println("IP 地址为:" + address.getHostAddress());
                        }
                    }
                }
            }
        } catch (SocketException e) {
            System.out.println("无法获取本机 IP 地址");
            e.printStackTrace();
        }
    }
}
3. 使用 System.getProperty

使用 System 类中的 getProperty() 方法来获取系统属性,然后找到对应的 IP 地址。

public class GetIPAddress {
    public static void main(String[] args) {
        System.out.println("IP 地址为:" + System.getProperty("java.net.preferIPv4Stack", "false"));
    }
}

这种方法只适用于 IPv4 地址。

以上三种方法可以满足绝大部分情况下获取本机 IP 地址的需求。