0

我正在开发基于 LAN 的软件,为此我需要使用 java 检测网络中系统所在的范围。该功能需要类似于windows实用软件netscan中的“检测本地IP范围”。在这方面的任何帮助将不胜感激。

4

2 回答 2

1

您可以尝试使用“ping”。

这篇文章有一些关于 ping 开始的代码。

如何从 Windows 执行真正的 Java ping?

于 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 回答