Java项目启动时获取服务器IP

在开发Java项目时,有时候我们需要获取服务器的IP地址。这在一些场景下特别有用,比如需要记录用户的登录IP,或者需要限制只有特定的IP才能访问某些功能。本文将介绍如何在Java项目启动时获取服务器的IP地址,并给出相应的代码示例。

获取服务器IP的方法

Java中获取服务器IP的方法有很多种,下面我们将介绍两种常用的方法:使用InetAddress类和使用NetworkInterface类。

使用InetAddress类获取服务器IP

InetAddress类是Java提供的用于表示IP地址的类,它提供了获取本地IP地址的方法。下面是使用InetAddress类获取服务器IP的示例代码:

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

public class ServerIPUtil {
    
    public static String getServerIP() {
        try {
            InetAddress address = InetAddress.getLocalHost();
            return address.getHostAddress();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        return null;
    }
    
    public static void main(String[] args) {
        String serverIP = getServerIP();
        System.out.println("服务器IP地址:" + serverIP);
    }
}

在上面的代码中,我们使用InetAddress.getLocalHost()方法获取本地主机的InetAddress对象,然后调用getHostAddress()方法获取服务器的IP地址。

使用NetworkInterface类获取服务器IP

NetworkInterface类是Java提供的用于网络接口的类,它可以获取到服务器的所有网络接口信息,包括IP地址。下面是使用NetworkInterface类获取服务器IP的示例代码:

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

public class ServerIPUtil {

    public static String getServerIP() {
        try {
            Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
            while (interfaces.hasMoreElements()) {
                NetworkInterface networkInterface = interfaces.nextElement();
                Enumeration<InetAddress> addresses = networkInterface.getInetAddresses();
                while (addresses.hasMoreElements()) {
                    InetAddress address = addresses.nextElement();
                    if (!address.isLoopbackAddress() && !address.isLinkLocalAddress() && address.isSiteLocalAddress()) {
                        return address.getHostAddress();
                    }
                }
            }
        } catch (SocketException e) {
            e.printStackTrace();
        }
        return null;
    }
    
    public static void main(String[] args) {
        String serverIP = getServerIP();
        System.out.println("服务器IP地址:" + serverIP);
    }
}

在上面的代码中,我们使用NetworkInterface.getNetworkInterfaces()方法获取服务器的所有网络接口,然后遍历每个接口的IP地址,找到非回环地址、非本地链接地址、站点本地地址即可获取到服务器IP地址。

运行示例代码

将上述示例代码保存为ServerIPUtil.java文件,然后在命令行中进入文件所在目录,并执行以下命令进行编译和运行:

javac ServerIPUtil.java
java ServerIPUtil

运行结果将输出服务器的IP地址。

总结

本文介绍了在Java项目启动时获取服务器IP的方法,并给出了使用InetAddress类和NetworkInterface类的示例代码。通过这两种方法,我们可以方便地获取到服务器的IP地址,以满足各种需求。在实际应用中,可以根据具体的情况选择适合的方法来获取服务器IP。