Java获取当前服务器IP地址

在日常开发中,有时候我们需要获取服务器的IP地址。Java提供了一种简单的方法来获取当前服务器的IP地址。在本文中,我们将介绍如何使用Java代码获取服务器的IP地址,并提供了相应的代码示例。

获取IP地址的几种方法

在开始之前,我们需要了解一下获取IP地址的几种方法。一台服务器可能有多个网络接口,每个接口都有一个对应的IP地址。下面列举了常见的获取IP地址的方法:

  1. 使用java.net.InetAddress
  2. 使用java.net.NetworkInterface
  3. 使用System.getProperty()方法

接下来,我们将逐一介绍这些方法。

使用java.net.InetAddress

java.net.InetAddress类是Java中表示IP地址的类。它提供了一些静态方法来获取本地主机的IP地址。以下是使用InetAddress类获取IP地址的代码示例:

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

public class GetIPAddress {

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

上面的代码中,我们使用InetAddress类的getLocalHost()方法获取本地主机的InetAddress对象。然后,通过调用getHostAddress()方法获取IP地址。最后,将IP地址打印到控制台。

使用java.net.NetworkInterface

java.net.NetworkInterface类提供了一种更底层的方法来获取服务器的IP地址。它可以获取所有网络接口的信息,并从中提取出IP地址。以下是使用NetworkInterface类获取IP地址的代码示例:

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

public class GetIPAddress {

    public static void main(String[] args) {
        try {
            Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
            while (networkInterfaces.hasMoreElements()) {
                NetworkInterface networkInterface = networkInterfaces.nextElement();
                Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();
                while (inetAddresses.hasMoreElements()) {
                    InetAddress inetAddress = inetAddresses.nextElement();
                    if (!inetAddress.isLoopbackAddress() && inetAddress.getHostAddress().indexOf(':') == -1) {
                        String ipAddress = inetAddress.getHostAddress();
                        System.out.println("IP Address: " + ipAddress);
                    }
                }
            }
        } catch (SocketException e) {
            e.printStackTrace();
        }
    }
}

上面的代码中,我们使用NetworkInterface类的getNetworkInterfaces()方法获取所有网络接口的枚举。然后,遍历枚举中的每个网络接口,再使用getInetAddresses()方法获取该网络接口的所有IP地址。最后,排除回环地址和IPv6地址,获取到服务器的真实IP地址,并将其打印到控制台。

使用System.getProperty()方法

System.getProperty()方法可以获取系统属性。在Java中,我们可以通过"java.net.preferIPv4Stack""java.net.preferIPv6Addresses"这两个系统属性来获取服务器的IP地址。以下是使用System.getProperty()方法获取IP地址的代码示例:

public class GetIPAddress {

    public static void main(String[] args) {
        String ipAddress = System.getProperty("java.net.preferIPv4Stack");
        System.out.println("IP Address: " + ipAddress);
    }
}

上面的代码中,我们使用System.getProperty()方法获取系统属性"java.net.preferIPv4Stack"的值,该值就是服务器的IP地址。最后,将IP地址打印到控制台。

总结

本文介绍了三种常用的方法来获取服务器的IP地址,分别是使用java.net.InetAddress类、java.net.NetworkInterface类和System.getProperty()方法。这些方法对于在Java中获取IP地址非常有用。在实际开发中,我们可以根据需要选择合适的方法来获取服务器的IP地址。

希望本文对您有所帮助!如果您有任何疑问或建议,请随时提出。感谢阅读!

参考文献

  • [Java - Get IP Address](
  • [How to get