Java本地IP范围检测

标签 java ip range lan

我正在开发一个基于 LAN 的软件,为此我需要使用 Java 来检测网络中系统所在的范围。该功能要求类似于Windows实用软件Netscan中的“检测本地IP范围”。

最佳答案

如果您想要实际的本地子网 IP 范围,而不是本地子网中 Activity 的 IP 地址列表,则可以使用以下代码来获取子网掩码大小:

InetAddress localHost = Inet4Address.getLocalHost();
NetworkInterface ni = NetworkInterface.getByInetAddress(localHost);
InterfaceAddress ia = ni.getInterfaceAddresses().get(0);
short mask = ia.getNetworkPrefixLength();

这将为您提供一个值为 1-32(可能是 24)的 short 原语。然后您可以使用

byte[] b = ia.getAddress().getAddress();

这将为您提供一个byte[],您可以根据子网掩码对其进行掩码,以某种可用格式提供本地地址范围。

<小时/>

或者,如果您想要本地子网上的 Activity 主机列表,请使用 JPCap 进行 arp 扫描。这是我会使用的方法。

关于Java本地IP范围检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12035916/

相关文章:

java - Java流中map().map()的执行顺序

java - Eclipse Mars 不显示 Jboss 服务器

java - 从集合中选择随机元素。它可以继承自 Random 类吗?

c# - 如何使用正则表达式提取字符串的IP

google-app-engine - Google App Engine - IP 地址列表?

css -::-ms-thumb 出现在 MS Edge 的轨道后面

string - 字符串范围和 rune slice 范围之间有什么区别吗?

range - 如何从 D 中的范围创建关联数组

java - 使用两个列表在流中进行流传输

python-3.x - Python3检查IP地址是否是全局的