【发布时间】:2017-01-05 13:12:17
【问题描述】:
我正在创建一个实用程序,该实用程序还包含连接到我的网络的几个 IP 地址的列表。
我需要创建一个模块来不断刷新该列表,以便该列表中仅存在活动 IP。 我曾想过通过在每个 IP 上使用 PING 并删除无响应的 IP 来实现这一点。
问题是当我的系统本身未连接到网络时,我不想删除 IP,因为在这种情况下,由于显而易见的原因,所有 IP 都将被删除。
如何确定我的系统已连接到某个网络? 我正在使用 Java。 我尝试查看其他问题,但找不到任何相关内容。
[编辑1] IP列表是手动添加的,服务器还有几个我不需要关心的IP。所以我不能按照@Hoijf的建议在整个服务器中进行查找。 IP 也在不断变化,这就是为什么我需要更新我的列表,以便我们可以替换无响应的服务器/IP。
【问题讨论】:
-
在 JDK 中查看是否有 API 可以枚举所有本地网络接口或 IP 地址。它们存在于操作系统方面,但我不了解 Java。如果它们存在,请查看机器是否仍分配有预期的 IP 地址,并且适配器的状态是否仍为 UP。
-
另一种方法是通过其中一个命令行工具查询信息。在窗户上,例如
ipconfig。您可以将其作为子进程启动。解析相关信息,看看你的网卡是否还在连接,是否分配了IP地址。但是,这可能比直接的 Java/OS API 开销更大。
标签: java windows networking network-programming ping