以编程方式列出子网中的所有设备

时间:2016-05-23 11:53:52

标签: linux networking

我想使用C获取网络中所有活动IP设备的列表。

我将用一个例子解释我的问题。

示例:我在网络中有5台设备,其IP范围为

  1. 设备10.0.0.2
  2. 设备10.0.0.3
  3. 设备10.0.0.4
  4. 设备10.0.0.5
  5. 设备10.0.0.6
  6. 从我的申请表中我想获得此列表。我的平台是Linux,我正在使用C.目前我没有使用任何网络库。如果某些库提供了这样的实用程序,我就可以使用它。

    请提供相同的建议。

2 个答案:

答案 0 :(得分:0)

没有超快的直接逻辑可以知道哪些IP地址在线,但有一些技巧可以使用。

最常见的不需要任何特殊的东西只是尝试使用TCP连接到每个主机,而不是您期望的服务。

另一种技术可以先发送ICMP ping,但并非所有操作系统都能通过默认设置等来解决ping问题。

可以使用的最后一种技术(仅适用于本地网络,而不是通过网关)是在尝试发送ping之后,查看ARP表。如果存在有效的ARP条目,则即使未收到ping回复,主机也会处于联机状态。

答案 1 :(得分:0)

您可以使用 nmap(注意 /24 用于子网掩码,-sn 标志用于快速 Ping 扫描),如 https://www.howtogeek.com/423709/how-to-see-all-devices-on-your-network-with-nmap-on-linux/

中所述
sudo nmap -sn 192.168.4.0/24

您也可以进行广播 ping,但 nmap 会为您提供更多详细信息:

ping 192.168.178.255 -b