Mac OS X:热门以c ++发送arp请求

时间:2013-11-05 11:20:25

标签: c++ macos arp

我是Mac上编程的新手。我想始终确保我的程序管理的所有网络接口都具有ARP缓存中GW的MAC地址。为此,我想以编程方式向GW发送ARP请求,如果我检测到它的MAC地址丢失。

对于AF_PACKET / PF_PACKET地址系列和协议上的原始套接字,Mac OS X似乎没有支持。还有其他方法可以在C ++中执行此操作吗?例如,是否有可用于发送ARP请求的API?

1 个答案:

答案 0 :(得分:0)

如果您需要确保每个主机都有与默认网关关联的正确ARP条目,您可以设置静态ARP条目。静态ARP表项永远保留在ARP表中,因此您不需要定期发送ARP请求。

arp -s“IP_GW”“MAC_GW”-i“您想要设置的设备,E.G:en0”

无论如何,您可以使用C库“libnet”发送ARP请求(也适用于Windows和Linux)。这是一个较低级别的库,您需要处理字节级别的数据包及其标头。要创建ARP请求,您必须使用:

libnet_autobuild_arp() libnet_autobuild_ethernet()

在这里你可以找到一个libnet教程: https://repolinux.wordpress.com/2011/09/18/libnet-1-1-tutorial/#introduction