2012-02-27 6 views
1

好奇心が強い。それは冗長ですか?あなたは既に使用したいネットワークに縛られていませんか?おそらく、これは0.0.0.0にバインドされ、インターフェイスXからのマルチキャストパケットだけをリッスンしたい場合です。あなたは、通常の場合であるINADDR_ANYにバインドされている場合ソケットがすでにバインドされている必要がある場合、DatagramSocketImpl joinGroupメソッドがNetworkInterfaceを受け取るのはなぜですか?

答えて

2
  1. 、参加グループのIGMPメッセージは、NICがルーティングテーブルは、マルチキャストアドレスへの最短ルートを与えると言うインターフェイス方を経由して出て行きます。マルチホームホストでは、すべてのNIC経由で外出する必要があるかもしれません。

  2. 特定のNICにバインドされている場合は、参加するときにネットワークインターフェイスを指定することは意味がありません。

  3. ユニキャストUDPではなく、マルチキャストを受信できるようにマルチキャストアドレス自体にバインドされている場合は、すべてのインターフェイス経由で参加する場合は、(1)のようにループする必要があります。

+0

私がBOUNDしていないときにだけNetworkInterfaceアドレスが必要と言うことができますか?インターフェイスAにバインドされていて、インターフェイスBを使用してjoinGroupを呼び出すと、何が起こるのか不思議です。 – chrisapotek

+0

@chrisapotek(a)bind()、connect()、send()、またはreceive()のやりとりをすると、常に特定のNICまたはINADDR_ANYにバインドされます。 (b)おそらく何も起こりませんが、「弱いエンドシステムモデル」と呼ばれるTCP/IPの不可解なことに依存します。私はあなたの元のポストでLinuxの異常として記述したことに反対してきましたが、WR Stevensを再読み込みすると、m/cグループアドレスへのバインディングはおそらくあなたのシステムそれをサポートします。 – EJP

関連する問題