linux多IP地址环境下,java读取本机实际的IP地址

devtools/2024/11/6 11:36:56/

一、ifconfig

在这里插入图片描述
可以看到,本机有许多IP地址,还未许多未截取。

而实际的IP是192.168.8.28

所以我们在读取本机IP的时候,需要去掉无效的IP。

因为本机安装了docker导致生成了许多虚拟网段的IP。

二、源码

java">
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;public class GetIPAddress {/*** 获取Linux下的IP地址** @return IP地址* @throws SocketException*/public static String getLinuxLocalIp() throws SocketException {String ip = "";try {for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces();en.hasMoreElements();) {NetworkInterface intf = en.nextElement();String name = intf.getName();if (!name.contains("docker") && !name.contains("lo")) {for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses();enumIpAddr.hasMoreElements();) {InetAddress inetAddress = enumIpAddr.nextElement();if (!inetAddress.isLoopbackAddress()) {String ipaddress = inetAddress.getHostAddress().toString();if (!ipaddress.contains("::") && !ipaddress.contains("0:0:")&& !ipaddress.contains("fe80")) {ip = ipaddress;}}}}}} catch (SocketException ex) {System.out.println("获取ip地址异常");ex.printStackTrace();}System.out.println("IP:" + ip);return ip;}
}

运行程序,得到本机正确的IP地址。

在这里插入图片描述


http://www.ppmy.cn/devtools/131744.html

相关文章

Vue.js组件开发:构建高效、可复用的前端应用

Vue.js组件开发&#xff1a;构建高效、可复用的前端应用 Vue.js是一款轻量级、灵活且易于上手的前端框架&#xff0c;广泛应用于构建现代Web应用。Vue.js的核心思想是通过组件化的方式来构建应用&#xff0c;每个组件都是一个独立的、可复用的代码块&#xff0c;负责渲染特定的…

网页版五子棋—— WebSocket 协议

目录 前言 一、背景介绍 二、原理解析 1.连接过程&#xff08;握手&#xff09; 2.报文格式 三、代码示例 1.服务端代码 &#xff08;1&#xff09;TestAPI 类 &#xff08;2&#xff09;WebSocketConfig 类 2.客户端代码 3.代码演示 结尾 前言 从本篇文章开始&am…

Mac删除软件,步骤超简单!

Mac删除软件&#xff0c;有人容易&#xff0c;有人难&#xff0c;但不管怎么样&#xff0c;你确定你删除的软件是彻底干净的吗&#xff1f;看看张女士的故事咯。 周末的下午&#xff0c;张女士坐在咖啡馆里&#xff0c;端着一杯热气腾腾的拿铁&#xff0c;准备用她的MacBook处…

HTB:PermX[WriteUP]

目录 连接至HTB服务器并启动靶机 1.How many TCP ports are listening on PermX? 使用nmap对靶机TCP端口进行开放扫描 2.What is the default domain name used by the web server on the box? 使用curl访问靶机80端口 3.On what subdomain of permx.htb is there an o…

【spark的集群模式搭建】Standalone集群模式的搭建(简单明了的安装教程)

文章目录 1、使用Anaconda部署Python2、上传、解压、重命名3、创建软连接4、配置spark环境变量5、修改 spark-env.sh配置文件6、启动hdfs&#xff0c;创建文件夹7、修改spark-defaults.conf配置文件8、修改workers配置文件9、修改log4j.properties配置文件&#xff08;可选&…

掌握 Jest 配置文件:优化单元测试的灵活性与可维护性

引言 在现代软件开发中&#xff0c;单元测试是确保代码质量和稳定性的关键步骤。Jest 是一个广泛使用的 JavaScript 测试框架&#xff0c;提供了丰富的配置选项来优化测试过程。通过配置文件&#xff0c;开发者可以更灵活地控制测试环境&#xff0c;确保测试的可靠性和可维护性…

系统学英语 — 句子成分

句子成分 句子成分的类型包括&#xff1a;主、谓、宾、表、定、状、补、同位语。 成分作用充当词类举例主语句子的主体&#xff0c;动作的发出者。表示什么人、什么事。1&#xff09;名词性词&#xff08;名词、代词、数词、非谓语动词&#xff09;&#xff1b;2&#xff09;…

C#语言发展历史

1.C# 1.0 发布于2002年1月 和 Visual Studio .NET 2002 一起发布的 C# 版本 1.0 非常像 Java。其目标是成为一种“简单、现代、通用的面向对象的语言”。当时&#xff0c;看起来像 Java 意味着它实现了早期的设计目标。 不过如果现在回顾 C# 1.0&#xff0c;你会觉得有点晕。 它…