Java获取Linux本机IP地址(排除127.0.0.1)

在Linux环境下,我们经常需要使用Java代码获取本机的IP地址,但要排除掉回环地址127.0.0.1。以下是一段示例代码,可以实现这个功能:

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

public class IPExample {
    public static void main(String[] args) {
        try {
            Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
            while (interfaces.hasMoreElements()) {
                NetworkInterface iface = interfaces.nextElement();
                if (iface.isLoopback() || !iface.isUp()) {
                    continue; // 排除回环接口和关闭的接口
                }

                Enumeration<InetAddress> addresses = iface.getInetAddresses();
                while (addresses.hasMoreElements()) {
                    InetAddress addr = addresses.nextElement();
                    if (addr.isLoopbackAddress()) {
                        continue; // 排除回环地址
                    }
                    System.out.println('IP地址: ' + addr.getHostAddress());
                }
            }
        } catch (SocketException e) {
            e.printStackTrace();
        }
    }
}

代码解释:

  1. 使用NetworkInterface.getNetworkInterfaces()获取所有网络接口。
  2. 遍历每个网络接口,使用isLoopback()isUp()方法判断接口是否为回环接口或是否已启动。
  3. 获取每个网络接口的IP地址列表,使用getInetAddresses()方法。
  4. 遍历每个IP地址,使用isLoopbackAddress()方法判断是否为回环地址,排除127.0.0.1。
  5. 最后,打印获取到的有效IP地址。

注意事项:

  • 由于网络接口和IP地址的复杂性,实际情况可能因操作系统和网络配置而异。
  • 建议在特定环境中测试此代码,并根据需要进行必要的调整。
Java获取Linux本机IP地址(排除127.0.0.1)

原文地址: https://www.cveoy.top/t/topic/Q1R 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录