特定のインターフェイスから、CでLinux上のUDPパケットを送信するにはどうすればよいですか?バインドを使うべきですか? IPアドレスを持たないインターフェースからUDPを送ることは可能ですか?Linuxの特定のインターフェイスからUDPパケットを送信するにはどうすればよいですか?
ありがとうございました。
特定のインターフェイスから、CでLinux上のUDPパケットを送信するにはどうすればよいですか?バインドを使うべきですか? IPアドレスを持たないインターフェースからUDPを送ることは可能ですか?Linuxの特定のインターフェイスからUDPパケットを送信するにはどうすればよいですか?
ありがとうございました。
あなたはSO_BINDTODEVICE
ソケットオプションを使用して、特定のインターフェイスにソケットをバインドすることができますが、しかし、これには、root権限が必要です。
代わりに、あなたはIP_PKTINFO
オプションを設定して、あなたのインターフェイスのインデックスにin_pktinfo
のipi_ifindex
を設定して、送信するためsendmsg
を使用することができます。
ソケットオプションIP_MULTICAST_IFを使用する必要があります。
こちらをご覧ください:Multicast-HOWTO-6.html
マルチキャストでしか動作しませんか? (また、アドレスが必要と思われる) – Hasturkun
あなたは知っていますか:それはクロスプラットフォームの方法ですか?例えば。この方法でWindows®上で動作しますか? –
@ハイ・エンジェル:私はそれを試していないが、明らかに['IPPROTO_IP'](http://msdn.microsoft.com/en-us/library/windows/desktop/ms738586(v=vs) .85).aspx)Windowsの 'IP_UNICAST_IF'ソケットオプション。このオプションはインタフェースインデックスを取り、現在のLinuxシステム(2012年に追加され、Linux v3.4にも追加されています)でも動作します。 – Hasturkun
うーん、面白いです...私はGNU/Linuxのドキュメントのオプションについて言及していませんでしたが、WINEプロジェクトを支援するために追加された[短いメモ](http://kernelnewbies.org/Linux_3.4)が見つかりました。私はWINEプロジェクトがそれを知っていればいいと思っています:D –