UDP データグラムをリモート ホストに送信するために Arduino イーサネットを使用しています。単一のデータグラムを送信するために使用するコードは次のとおりです。
Udp.begin(localPort);
...
Udp.beginPacket(remoteIP, remotePort);
Udp.write(data);
Udp.endPacket();
私の問題は、送信 UDP/IP パケットの TTL をカスタマイズする必要があることですが、Udp.begin、Udp.beginPacket、Udp.write 、およびUdp.endPacketのいずれも、そのようなオプションを設定するパラメーターを提供していません。
TTL フィールドがIP ヘッダーに属していることは知っていますが、Arduino のイーサネット / ソケット / w5100 ライブラリを使用して生の IP パケットを処理していないようです。
上記の関数の定義を調べました。特にEthernetUDP::beginPacket
、メッセージのペイロードを渡す直前に呼び出される便利なものを見つけたいと思っていたところですが、startUDP()
(socket. cpp) であり、後者は私には明確でない W5100 クラスのメソッドを扱っています。
パケットの TTL を設定するための何らかの高レベルの機能があるかどうか、誰かが知っていますか?それを達成するためにライブラリを深く掘り下げる必要がありますか?