如何为特定MAC地址刷新arp缓存?

时间:2013-07-02 16:22:54

标签: mac-address arp

我正在尝试创建一个VB .Net程序,用于确定设备是否在我的无线局域网上(启用了DHCP),因此我可以根据设备的具体情况采取具体措施。

通常当我查询arp缓存(使用我编写的反向查找例程)来确定设备的MAC地址是否存在时,我找不到它,因为设备缓存超时已到期且设备已从arp中删除。

由于设备使用DHCP获取其IP地址,因此无法使用“已知”IP地址查询arp缓存,但必须使用MAC地址来识别设备。

由于我试图快速发现设备是打开还是关闭,我想确定我的MAC搜索失败是由于缓存条目过期还是设备真正关闭。

有没有办法,只知道设备MAC地址,强制再次知道arp所以我可以尝试在30秒内再次搜索arp缓存以查看条目是否出现?

1 个答案:

答案 0 :(得分:1)

如果您与设备位于同一子网,并且设备将响应广播ICMP ping,则可以发送广播ping。

在我的示例中,我的机器在子网129.21.49.0/24(49.0到49.255)上为129.21.49.41。

  • 此类网络的网络地址为129.21.49.0(第一个地址)
  • 第一个可分配地址是129.21.49.1
  • 最后一个可分配的地址是129.21.49.254
  • 广播地址为129.21.49.255。

以下是一个例子:

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的机器。