ネットワーク経由で UDP をマイクロコントローラに送信しようとしています。マイクロコントローラは、無駄を省くためにほとんどすべての IP スタックが取り除かれているため、ARP に関与することはできません。マイクロコントローラはブロードキャスト パケットを出力しています。これを受信できるので、その IP アドレスと MAC アドレスがわかります。ブロードキャストUDPパケットを送信できますが、IPアドレスを使用してパケットを送信しようとすると、WiresharkでARPメッセージが表示されます。 micro、18は私のPCです。マイクロは 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アドレスがどこを見ているかを知っていることを望んでいました..
注意として、ネットワーク上の他のマイクロコントローラーの負荷を軽減するために、ブロードキャストを最小限に抑えたいと考えています。
前もってありがとう、ガレス