0

現在のマシン (マシンが接続されているルーター) でマルチキャストが有効になっているかどうかを判断するために、c で OSX にコードを記述しようとしています (目的の c も簡単に使用できます)。これを行うには、次の手順を試しています。

  1. ポートを開き、マルチキャストでデータを送信します。
  2. すべてのアクティブなアダプターで応答をリッスンします。
  3. 「ループバック」アダプターを除外します。
  4. 応答がない場合は、マルチキャストが無効になっている可能性があります。

ネットワーク プログラミングは初めてなので、リッスンしているマシンにソフトウェアをインストールしていない限り、ランダム データを送信してアクティブなアダプタから応答を得る方法がわかりません。常に応答を引き出す特定のマルチキャスト IP が予約されていますか、それともこれを実行するためのより良い方法はありますか?

4

2 に答える 2

1

マシンで IP マルチキャスト アドレスがアクティブになっているかどうかを判断するには (「マルチキャストが有効になっている」という意味だと思います)、ルーティング テーブルを調べて、224.0.0.0 から 239.255 の範囲に 1 つ以上の IP v4 アドレスがあるかどうかを確認します。 .255.255.

于 2013-08-08T16:40:41.310 に答える
-1

マルチキャストは、ローカル コンピューターではない DHCP によって実装されます。DHCP は、その DHCP サーバーに接続されている複数のクライアントに対応するアドレスを割り当てます。マルチキャスト メッセージを作成するときは、それをこの DHCP サーバーに送信します。DHCP サーバーはパケットを取得し、そのマルチキャスト アドレスにマップされているクライアントを見つけて、ルーターが自動的に複製する特別なパケットで送信します (したがって、2グループのメンバーが 1 つのルーターに接続され、そのルーターが別のルーター (ルーター 2 と呼ばれる) に接続されている場合、ルーター 2 は 2 つのパケットを送信せず、1 つを送信し、ルーター 1 は 2 つのコピーをクライアントに送信します。これの目的は、配信時間を短縮し、重複したデータを送信しないことです)。クライアントに関する限り、クライアントはマルチキャストを許可するように「セットアップ」されていませんが、ルーターがそれらをセットアップします。残りはクライアントに対して透過的です。クライアントがマルチキャスト グループに接続されているかどうかを確認する方法は、DHCP サーバーがマルチキャスト グループを作成したかどうかを確認し、マルチキャスト グループにマップされている IP アドレスからコンピューター名を見つけることです。

アクティブなすべてのアダプタをリッスンすることで、マルチキャスト ネットワークの一部であるかどうかがわからないパケット以外は何も取得できません。これは、他のすべてのパケットのように見えるためです (ルーターがパケットが表示される前に、マルチキャスト アドレスを自分の IP アドレスに変更してください)。それがマルチキャストの利点です。

于 2013-08-08T16:15:25.093 に答える