1

マルチキャスト パケットをリッスンする、busybox (カーネル 3.0.35 ARM) で実行されている C++ アプリケーションがあります。ネットワークケーブルを抜いた状態でアプリを起動し、後でプラグインすると、マルチキャストパケットを受信しないことが判明するまで、すべてが正常に機能しているように見えました. 理由がわかりません。エラーは発生せず、すべての設定操作 (bind、setsockopt など) は正常に終了し、ip maddr も正しい情報を示します。select() のみが着信データを報告しません。リンクがアップしていない場合、カーネルが異なる動作をすることはありますか?

興味深いことに、同じアプリが別のアドレスでマルチキャスト パケットも送信しますが、これはリンク ステータスの影響を受けないようで、ケーブルを接続すると問題なく送信されます。

何か案は?

ありがとう、トム

4

1 に答える 1

0

おそらく、起動時に JOIN を発行します。ケーブルが接続されていない場合、IGMP JOIN 要求はどこにも送信されないため、ルーターはマルチキャストを送信することを認識できません。

于 2013-07-29T21:53:55.713 に答える