IP_MREQ 構造体 (ws2ipdef.h)
ip_mreq構造体は、IPv4 アドレスのマルチキャスト グループ情報を提供します。
構文
typedef struct ip_mreq {
IN_ADDR imr_multiaddr;
IN_ADDR imr_interface;
} IP_MREQ, *PIP_MREQ;
メンバー
imr_multiaddr
IPv4 マルチキャスト グループのアドレス。
imr_interface
マルチキャスト グループを参加または削除する必要があるインターフェイスまたはインターフェイス インデックスのローカル IPv4 アドレス。 この値は、ネットワークのバイト順です。 このメンバーが 0.0.0.0.0 の IPv4 アドレスを指定する場合は、既定の IPv4 マルチキャスト インターフェイスが使用されます。
インターフェイス インデックス 1 を使用するには、IP アドレス 0.0.0.1 と同じになります。
注釈
ip_mreq構造体は、IPv4 アドレスと共に使用されます。 ip_mreq構造体は、IP_ADD_MEMBERSHIP および IP_DROP_MEMBERSHIP ソケット オプションと共に使用されます。
IPv4 マルチキャスト プログラミングに使用される ip_mreq 構造と関連構造は、RFC 3768 のセクション 4 と 8.1 の IETF の推奨事項に基づいています。 詳細については、「http://www.ietf.org/rfc/rfc3678.txt」を参照してください。
IPv4 で構成可能なマルチキャスト機能を追加する場合は、 ip_mreq_source 構造を使用します。 詳細については、「 マルチキャスト プログラミング 」を参照してください。
Windows Vista 以降では、IPv6 アドレスと IPv4 アドレスをサポートするマルチキャスト プログラミングに一連のソケット オプションを使用できます。 これらのソケット オプションは IP に依存せず、IPv6 と IPv4 の両方で使用できます。 これらの IP に依存しないオプションでは 、GROUP_REQ と GROUP_SOURCE_REQ 構造が使用され、Windows Vista 以降でのマルチキャスト プログラミングに推奨されるソケット オプションです。
ip_mreq構造体は、IPv6 ベースのipv6_mreq構造体と同等の IPv4 です。
imr_interface メンバーにはインターフェイス インデックスを指定できます。 0.x.x.x ブロック内の IP アドレス (0 の最初のオクテット) (0.0.0.0 の IP アドレスを除く) は、インターフェイス インデックスとして扱われます。 インターフェイス インデックスは 24 ビット番号です。 0.0.0.0/8 IPv4 アドレス ブロックは使用されません (この範囲は予約されています)。 GetAdaptersAddresses 関数を使用すると、imr_interface メンバーに使用するインターフェイス インデックス情報を取得できます。
ローカル IPv4 アドレスまたはインターフェイス インデックスは、既定のインターフェイスを使用するのではなく、ip_mreq構造体の imr_interface メンバーで常に指定することをお勧めします。 これは、複数のネットワーク インターフェイスと複数のパブリック IPv4 アドレスを持つコンピューターで特に重要です。
IPv4 マルチキャストに使用される既定のインターフェイスは、Windows のネットワーク スタックによって決まります。 アプリケーションは、 GetIpForwardTable 関数を使用して IPv4 ルーティング テーブルを取得する IPv4 マルチキャストに使用される既定のインターフェイスを決定できます。 宛先 IP アドレスのルーティング メトリックの値が 224.0.0.0 のネットワーク インターフェイスは、IPv4 マルチキャストの既定のインターフェイスです。 次のコマンドを使用して、コマンド プロンプトからルーティング テーブルを表示することもできます。
route print
IP_MULTICAST_IF ソケット オプションを使用して、IPv4 マルチキャスト パケットを送信する既定のインターフェイスを設定できます。 このソケット オプションでは、IPv4 マルチキャスト パケットの受信に使用される既定のインターフェイスは変更されません。
一般的な IPv4 マルチキャスト アプリケーションでは、 IP_ADD_MEMBERSHIP ソケット オプションと ip_mreq 構造を使用して、マルチキャスト グループに参加し、特定のインターフェイスでマルチキャスト パケットをリッスンします。 IP_MULTICAST_IF ソケット オプションを使用して、IPv4 マルチキャスト パケットをマルチキャスト グループに送信するインターフェイスを設定します。 最も一般的なシナリオは、マルチキャスト グループに対して同じインターフェイスでリッスンして送信するマルチキャスト アプリケーションです。 1 つのソケットをリッスンし、1 つ以上のソケットを送信するマルチキャスト アプリケーションで、複数のソケットを使用できます。
Windows Vista 以降用にリリースされた Microsoft Windows ソフトウェア開発キット (Windows SDK) (SDK) では、ヘッダー ファイルのorganizationが変更され、ws2ipdef.h ヘッダー ファイルに自動的に含まれる Ws2ipdef.h ヘッダー ファイルにip_mreq構造が定義されています。 Ws2ipdef.h ヘッダー ファイルを直接使用しないでください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
Header | ws2ipdef.h (Ws2tcpip.h を含む) |