首页 > 编程语言 >Java 获取本机 IP 地址的方法

Java 获取本机 IP 地址的方法

时间:2024-11-22 14:42:37浏览次数:3  
标签:inetAddress java InetAddress IP 地址 import Java

文章目录

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

一、使用 InetAddress.getLocalHost

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

示例代码:

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 地址信息。

示例代码:

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

标签:inetAddress,java,InetAddress,IP,地址,import,Java
From: https://blog.csdn.net/IpdataCloud/article/details/143946617

相关文章

  • ssh免密配置种子脚本-ip映射
    settimeout60spawnsshroot@masterexpect{#首次连接"(yes/no)?"{send"yes\r";exp_continue}"password"{send"root\r"}}expect"~]#"{send"echo192.168.93.128master>>/etc/hosts\r&qu......
  • 项目启动报错java 读取FMavenRepositoryorglz4lz4-java1.7.1lz4-java-1.7.1.jar时出错
    文章目录1.错误呈现2.错误原因3.解决方案3.1方案一:删除jar包,让Maven重新下载(项目重启后可能还是会报错)3.2方案二:删除jar包,手动下载jar包1.错误呈现java:读取F:\MavenRepository\org\lz4\lz4-java\1.7.1\lz4-java-1.7.1.jar时出错;errorinopeningzipfil......
  • 免费送源码:Java+django+MySQL django 教师培训反馈系统 计算机毕业设计原创定制
           目   录摘  要IAbstractII第1章  前  言31.1 研究背景31.2 研究现状31.3 系统开发目标3第2章  系统开发环境62.1HTTP协议62.2HTML网页技术62.3B/S结构62.4django脚本语言72.5MySQL数据库72.6Apache简介8第......
  • Java https validatorException PKIX path building failed 问题处理步骤
    背景这是一个老问题了,其实可以不写,但要花费时间重新整理思绪处理类似的问题很是头疼,因查找的大多数文章只是介绍了其中一部分知识,不能给一个没处理过相关问题的人提供详细步骤,故写此文档。希望大家也能尽可能提供完整的解决方案。原因http升级https时会面临证书校验问题,部......
  • JavaScript map和reduce的区别
    ‌map和reduce在JavaScript中都是用于处理数组的方法,但它们的主要区别在于用途和返回值。‌用途‌map()‌:主要用于对数组的每个元素应用一个函数,并返回一个新数组,这个新数组包含原数组每个元素调用函数处理后的结果。‌map()不会改变原数组‌,返回的新数组长度与原数组相同‌12......
  • Java的反射、网络模型、枚举知识点
    一、反射(Reflection)概念:反射是Java的一种特性,它允许程序在运行时检查和操作类及其属性、方法和构造器。主要功能:获取类的信息:可以通过Class对象获取类的名称、父类、接口、构造器和方法等。javaClass<?>clazz=Class.forName("com.example.MyClass");StringclassName......
  • 计算机毕业设计必看必学38034+Web影评系统设计与实现原创定制程序单片机,java、PHP、p
    摘   要网络的兴起,让电影从业者和影迷之间的交流变得更加的便捷,影评系统可以成为电影公司和制片方的重要参考,通过分析用户对电影的评价和反馈,了解观众的需求和口碑反应。基于这些信息,电影公司可以制定更有效的营销策略,提升电影的知名度和票房。同时也让用户有了一个可......
  • 基于Java的弹幕视频网站的设计与实现
    计算机毕业设计案例Java毕业设计案例ASP.NET毕业设计案例PHP毕业设计案例微信小程序毕业设计案例【12/26/04】基于Java的志愿者管理系统的设计与实现-2024计算机毕业设计基于ASP.NET的OA系统基于PHP的盛夏书店图书管理系统的设计与实现学生生活服务平台小程序基于Java的物......
  • Java教程:SE进阶【十万字详解】(中)
    ✨博客主页:https://blog.csdn.net/m0_63815035?type=blog......
  • java ssm 糖尿病个人健康管理系统 患者健康信息管理 源码 jsp
    一、项目简介本项目是一套基于SSM的糖尿病个人健康管理系统,主要针对计算机相关专业的和需要项目实战练习的Java学习者。包含:项目源码、数据库脚本、软件工具等。项目都经过严格调试,确保可以运行!二、技术实现​后端技术:Spring、SpringMVC、MyBatis前端技术:JSP、HTML、C......