从用户模式程序在Windows上传输和接收ARP数据

时间:2012-05-16 16:54:24

标签: c++ windows winapi network-programming windows-networking

(ARP =地址解析协议 - RFC 826) 有没有办法通过用户世界程序在Windows上发送和接收ARP流量?在Linux上,我们可以创建原始套接字来发送ARP流量,但在Windows上,我的研究表明我们需要编写一个可用于发送此类流量的驱动程序。我想过使用WinPcap,但它在内部安装了一个驱动程序,可用于发送/接收此类流量。

我的问题是:在没有安装驱动程序的情况下,Windows是否允许发送/接收ARP数据包?

1 个答案:

答案 0 :(得分:1)

使用SendARP发送ARP数据包的最简单方法是

您可以使用GetIpNetTable从IP堆栈的ARP表中检索地址。为确保您获得的是当前地址,通常需要DeleteIpNetEntry删除地址,然后SendARP,然后等待GetIpNetTable(如有必要,重复几次) ,直到你得到一个带有所需地址的条目。)

或者,对于Vista或更新版本,您可以使用ResolveIpNetEntry2更直接地检索数据。这会自动刷新地址的当前条目(如果有),发送ARP数据包,并返回当前结果(如果我没记错的话,还会用于更新堆栈的ARP表)。

相关问题