1

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

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

4

1 回答 1

1

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

要广播数据包,请将数据发送到绑定的适配器的子网广播 IP 地址,您可以通过使用GetAdaptersInfo()GetIpAddrTable()检索适配器的 IP 地址和子网掩码,然后将它们进行 OR/AND 运算来动态计算该地址:

BroadcastIP = (IPAddress & SubnetMask) | ~SubnetMask;
于 2013-04-10T16:03:52.700 回答