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

我的问题是:在不安装驱动程序的情况下,Windows是否可以通过任何方式允许ARP数据包的发送/接收?

最佳答案

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

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

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

关于c++ - 在Windows上从用户模式程序发送和接收ARP数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10623153/

10-11 23:10