我正在尝试通过网络将 UDP 发送到微控制器。微控制器已经剥离了几乎所有的 IP 堆栈以保持精简,因此无法参与 ARP。微控制器正在输出广播数据包,我可以接收到它,所以我知道它的 IP 地址和 MAC 地址。我可以向它发送广播UDP数据包,它接收良好,但是当我尝试使用它的IP地址发送数据包时,我可以在wireshark中看到ARP消息,“谁有192.168.1.205?告诉192.168.1.18”,205是微,18是我的电脑。微不响应其 MAC 地址,所以我无法发送数据包,但我知道微发送的数据包中的 MAC 地址。
所以我的问题是我可以使用 UdpClient 指定 IP 和 MAC 地址,因此它不需要使用 ARP .. 还有什么我不考虑的吗?
有效的广播方法如下所示:
myUdpClient.EnableBroadcast = true;
myUdpClient.Connect(IPAddress.Broadcast, port);
myUdpClient.Send(dataBytes, dataBytes.Length);
目前不起作用的固定IP方法看起来像这样
IPEndPoint ep = new IPEndPoint("192.168.1.205", port);
myUdpClient.Send(dataBytes, dataBytes.Length, ep);
我看过使用类似的东西
myUdpClient.Client.SendTo(dataBytes, SocketFlags.DontRoute, ep);
但这不起作用,并且仍然没有使用微控制器MAC地址..我的应用程序知道并且需要使用(我认为)。我还希望网络上的一些 ARP 表能够知道 MAC 地址在哪里看到,因为带有此信息的数据包正在从它发送..
作为说明,我想将广播保持在最低限度,以减少网络上其他微控制器的负载。
在此先感谢,加雷斯