我正在尝试创建一个VB .Net程序,用于确定设备是否在我的无线局域网上(启用了DHCP),因此我可以根据设备的具体情况采取具体措施。
通常当我查询arp缓存(使用我编写的反向查找例程)来确定设备的MAC地址是否存在时,我找不到它,因为设备缓存超时已到期且设备已从arp中删除。
由于设备使用DHCP获取其IP地址,因此无法使用“已知”IP地址查询arp缓存,但必须使用MAC地址来识别设备。
由于我试图快速发现设备是打开还是关闭,我想确定我的MAC搜索失败是由于缓存条目过期还是设备真正关闭。
有没有办法,只知道设备MAC地址,强制再次知道arp所以我可以尝试在30秒内再次搜索arp缓存以查看条目是否出现?
答案 0 :(得分:1)
如果您与设备位于同一子网,并且设备将响应广播ICMP ping,则可以发送广播ping。
在我的示例中,我的机器在子网129.21.49.0/24(49.0到49.255)上为129.21.49.41。
以下是一个例子:
angst(~) > ping 129.21.49.255
PING 129.21.49.255 (129.21.49.255): 56 data bytes
64 bytes from 129.21.49.254: icmp_seq=0 ttl=255 time=0.316 ms
64 bytes from 129.21.49.205: icmp_seq=0 ttl=64 time=0.422 ms (DUP!)
64 bytes from 129.21.49.148: icmp_seq=0 ttl=64 time=0.703 ms (DUP!)
64 bytes from 129.21.49.31: icmp_seq=0 ttl=64 time=0.766 ms (DUP!)
64 bytes from 129.21.49.23: icmp_seq=0 ttl=64 time=0.822 ms (DUP!)
64 bytes from 129.21.49.246: icmp_seq=0 ttl=64 time=13.538 ms (DUP!)
^C
这些是我的子网中所有配置为响应广播ping的机器。