我想通过网络发送UDP给微控制器。微控制器几乎将所有的IP堆栈都剥离出来,以保持其精简,因此无法参与ARP。 微控制器正在输出广播数据包,我可以收到,所以我知道它的IP地址和MAC地址。 我可以向它发送广播UDP数据包,但它收到罚款,但当我尝试使用其IP地址发送数据包时,我可以在wireshark中看到ARP消息,“谁有192.168.1.205?告诉192.168.1.18”,205是微,18是我的电脑。微不响应它的MAC地址,所以我无法发送数据包,但我知道微型发出的数据包的MAC地址。发送UDP数据包,不使用ARP,已知的IP和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地址ess ..我的应用程序知道和需要使用(我认为)。我也希望网络上的一些ARP表能够知道MAC地址在哪里看到,因为这些信息正在从它发送的数据包中。
作为一个说明,我想保持广播到最低限度以减少加载网络上的其他微控制器。
由于提前, 加雷思
内置的网络类别不会友好地发送到不符合标准的目标。 – 2012-08-07 12:54:42