如果目标IP已知,是否有办法使用ANSI C获取目标MAC地址?我最好用系统调用来做,所以内核处理它,我可以利用ARP缓存。我知道我可以构建并发送自己的ARP请求,但是我不会拥有缓存功能等,除非我自己实现它,所以让内核处理它是感觉就好了。
答案 0 :(得分:2)
不是一个确切的答案,因为它不是ANSI C,但你可以从/proc/net/arp
读取arp表(在Linux中,也就是说)。这就是arp
看起来的地方。对于任何其他操作系统,最简单的方法是在等效的arp-cache-showing实用程序上使用strace
或等效项。
答案 1 :(得分:-1)
我决定做的是发送我自己的ARP数据包并在我的应用程序中内部缓存它。如果目的地在我的本地网络之外,我解析/proc/net/route
并提取给定接口的网关,并将arp数据包发送到网关以获取它的macaddress(因为这是发往本地网络之外的数据包的目标宏地址)