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 地址,开发人员可根据具体的应用场景选择合适的方法使用。

相关推荐
老白干44 分钟前
jjwt 0.9.1 在 JDK 11+ 上的两个“坑”与完整解决方案
java·python·log4j
夜月yeyue7 小时前
AUTOSAR CP 从上电到 Runnable
c语言·网络·tcp/ip·车载系统
treesforest7 小时前
IP定位技术在网络犯罪侦查中的应用与价值
网络·网络协议·tcp/ip·网络安全·ip归属地查询·反欺诈
圆山猫7 小时前
[Virtualization](四):Linux KVM/RISC-V 的 vCPU 运行路径
java·linux·risc-v
微学AI8 小时前
一根针指向所有方向:挂谷猜想对 LLM Agent 技能-记忆架构的启示
开发语言·人工智能·架构·挂谷猜想
城管不管8 小时前
ReAct、Plan-and-Execute、Reflection 三大智能 Agent 范式核心区别
java·人工智能·算法·spring·ai·动态规划
IT小白杨8 小时前
从环境制备到自动化工作流:多账号运营的工程化架构拆解
java·经验分享·自动化·安全架构·指纹浏览器
豆瓣鸡8 小时前
算法日记 - Day3
java·开发语言·算法
萧瑟余晖9 小时前
Java深入解析篇九之NIO详解
java·网络·nio
韭菜炒鸡肝天9 小时前
VTK开发笔记(一):VTK介绍,Qt..+VSx+VTK.编译
开发语言·笔记·qt