有没有办法在Windows上使用winsock直接在链接上发送以太网数据包?

时间:2013-04-10 10:29:40

标签: windows winsock ethernet winsock2 raw-sockets

有没有办法在Windows上使用winsock直接在链接上发送以太网数据包?

我需要在链接上广播以太网数据包(即目标Mac地址:广播​​(ff:ff:ff:ff:ff:ff))

1 个答案:

答案 0 :(得分:1)

无法直接访问以太网链接。这是受Windows保护的硬件层。要在特定的以太网适配器上发送数据,您需要bind()到该适配器IP地址的套接字,然后您可以send()sendto()将数据发送到目标IP根据需要。

要广播数据包,请将数据发送到绑定适配器的子网广播IP地址,您可以使用GetAdaptersInfo()GetIpAddrTable()动态计算以检索适配器的数据。 IP地址和子网掩码,然后将它们OR / AND组合在一起:

BroadcastIP = (IPAddress & SubnetMask) | ~SubnetMask;