有没有办法在windows上使用winsock直接在链接上发送以太网数据包?
我需要在链路上广播以太网数据包(即目标 Mac 地址:广播(ff:ff:ff:ff:ff:ff))
有没有办法在windows上使用winsock直接在链接上发送以太网数据包?
我需要在链路上广播以太网数据包(即目标 Mac 地址:广播(ff:ff:ff:ff:ff:ff))
无法直接访问以太网链接。那是受 Windows 保护的硬件层。要在特定的以太网适配器上发送数据,您需要连接bind()
到该适配器的 IP 地址的套接字,然后您可以根据send()
需要sendto()
将数据发送到目标 IP。
要广播数据包,请将数据发送到绑定的适配器的子网广播 IP 地址,您可以通过使用GetAdaptersInfo()
或GetIpAddrTable()
检索适配器的 IP 地址和子网掩码,然后将它们进行 OR/AND 运算来动态计算该地址:
BroadcastIP = (IPAddress & SubnetMask) | ~SubnetMask;