Java 获取本机 IP 地址的方法

文章目录

在 Java 编程中,若有本机的 IP 地址的需求,小编来展示一下方法:

一、使用 InetAddress.getLocalHost

一是最基本的获取本机 IP 地址的方式。

示例代码:

java 复制代码
import java.net.InetAddress;

import java.net.UnknownHostException;

public class GetIPAddress {

    public static void main(String[] args) {

        try {

            InetAddress inetAddress = InetAddress.getLocalHost();

            System.out.println("本机 IP 地址: " + inetAddress.getHostAddress());

        } catch (UnknownHostException e) {

            e.printStackTrace();

        }

    }

}

这种方法在大多数简单场景下可以正常工作,但如果主机有多个网络接口或者处于复杂的网络环境中,可能获取到的不是期望的 IP 地址

二、遍历网络接口获取

通过遍历所有网络接口来获取更准确的 IP 地址信息。

示例代码:

java 复制代码
import java.net.InetAddress;

import java.net.NetworkInterface;

import java.net.SocketException;

import java.util.Enumeration;



public class GetIPAddressByInterface {

    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) {

                        System.out.println("本机 IP 地址: " + inetAddress.getHostAddress());

                    }

                }

            }

        } catch (SocketException e) {

            e.printStackTrace();

        }

    }

}

上述代码首先获取所有网络接口,然后遍历每个接口下的 IP 地址,排除回环地址(isLoopbackAddress 判断)和 IPv6 地址(通过 indexOf(':') == -1 判断),从而得到可能的本机 IP 地址。这种方法在复杂网络环境中能获取到多个符合条件的 IP 地址,可根据实际需求进一步筛选。

通过以上两种方法,可以在 Java 程序中获取本机的 IP 地址,开发人员可根据具体的应用场景选择合适的方法使用。

相关推荐
不可求~几秒前
C++ 报错交给 AI 之前,先准备好这 8 类信息
开发语言·c++·人工智能
名字还没想好☜5 分钟前
用 Python struct 解析二进制协议:pack/unpack、字节序与对齐踩坑
开发语言·python·二进制·struct
AI多Agent协作实战派17 分钟前
AI多Agent协作系统实战(四十六):改了十次规则,AI员工还是老样子——会话缓存的坑
java·spring·缓存
一知半解仙28 分钟前
当机器人学会泛化,而我在写Java:一名后端开发者的2026年8月21日观察手记
java·开发语言·机器人
青 春 记 忆1 小时前
LeetCode 155. 最小栈|Python 解法详解
开发语言·python·leetcode
葡萄成熟时 !9 小时前
JAVA 常用API学习笔记
java·笔记·学习
剩下了什么10 小时前
float32 与 float64 精度陷阱:如何在 Go 中避免错误使用
开发语言·后端·golang
Rain的Java大神之路10 小时前
介绍一下分布式事务
java·分布式·后端·spring·spring cloud·架构·springcloud
指尖时光.10 小时前
Three.js 超全入门综合案例
开发语言·javascript·ecmascript
暴力求解10 小时前
Linux网络---传输层协议TCP(二)
linux·服务器·开发语言·网络·tcp/ip