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