我正在开发一个基于 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/