我正在开发基于 LAN 的软件,为此我需要使用 java 检测网络中系统所在的范围。该功能需要类似于windows实用软件netscan中的“检测本地IP范围”。在这方面的任何帮助将不胜感激。
问问题
414 次
2 回答
1
于 2012-10-10T17:03:18.663 回答
1
如果您想要实际的本地子网 IP 范围,而不是本地子网中的活动 IP 地址列表,则可以使用以下代码获取子网掩码大小:
InetAddress localHost = Inet4Address.getLocalHost();
NetworkInterface ni = NetworkInterface.getByInetAddress(localHost);
InterfaceAddress ia = ni.getInterfaceAddresses().get(0);
short mask = ia.getNetworkPrefixLength();
这将为您short
提供一个值为 1-32,可能为 24 的原语。然后您可以使用
byte[] b = ia.getAddress().getAddress();
这将为您提供一个byte[]
您将屏蔽子网mask
的内容,以某种可用格式为您提供本地地址范围。
或者,如果您想要本地子网上的活动主机列表,我会使用使用JPCap的 arp-scan。
于 2012-10-10T17:14:54.307 回答