IP_MREQ_SOURCE 構造体 (ws2ipdef.h)

ip_mreq_source構造体は、IPv4 アドレスのマルチキャスト グループ情報を提供します。

構文

typedef struct ip_mreq_source {
  IN_ADDR imr_multiaddr;
  IN_ADDR imr_sourceaddr;
  IN_ADDR imr_interface;
} IP_MREQ_SOURCE, *PIP_MREQ_SOURCE;

メンバー

imr_multiaddr

IPv4 マルチキャスト グループのアドレス。

imr_sourceaddr

IPv4 マルチキャスト ソースのアドレス。

imr_interface

マルチキャスト グループを参加、削除、ブロック、またはブロック解除する必要があるインターフェイスまたはインターフェイス インデックスのローカル IPv4 アドレス。 この値は、ネットワークのバイト順です。 このメンバーが 0.0.0.0.0 の IPv4 アドレスを指定する場合は、既定の IPv4 マルチキャスト インターフェイスが使用されます。

インターフェイス インデックス 1 を使用するには、IP アドレス 0.0.0.1 と同じになります。

解説

ip_mreq_source構造体は、IPv4 アドレスと共に使用されます。 ip_mreq_source構造体は、IP_ADD_SOURCE_MEMBERSHIPIP_BLOCK_SOURCEIP_DROP_SOURCE_MEMBERSHIPおよびIP_UNBLOCK_SOURCEソケット オプションと共に使用されます。

IPv4 マルチキャスト プログラミングに使用される ip_mreq_source 構造と関連構造体は、RFC 3768 のセクション 4 および 8.1 の IETF の推奨事項に基づいています。 詳細については、「http://www.ietf.org/rfc/rfc3678.txt」を参照してください。

Windows Vista 以降では、IPv6 アドレスと IPv4 アドレスをサポートするマルチキャスト プログラミングに一連のソケット オプションを使用できます。 これらのソケット オプションは IP に依存せず、IPv6 と IPv4 の両方で使用できます。 これらの IP に依存しないオプションでは 、GROUP_REQGROUP_SOURCE_REQ 構造が使用され、Windows Vista 以降でのマルチキャスト プログラミングに推奨されるソケット オプションです。 詳細については、「 マルチキャスト プログラミング 」を参照してください。

IPv4 で構成可能なマルチキャスト機能が少ない場合は、 ip_mreq 構造を使用します。 IPv6 の場合は、 ipv6_mreq 構造体を使用します。

imr_interface メンバーにはインターフェイス インデックスを指定できます。 0.x.x.x ブロック内の IP アドレス (0 の最初のオクテット) (0.0.0.0 の IP アドレスを除く) は、インターフェイス インデックスとして扱われます。 インターフェイス インデックスは 24 ビット番号です。 0.0.0.0/8 IPv4 アドレス ブロックは使用されません (この範囲は予約されています)。 GetAdaptersAddresses 関数を使用すると、imr_interface メンバーに使用するインターフェイス インデックス情報を取得できます。

既定のインターフェイスを使用するのではなく、ip_mreq_source構造体のimr_interface メンバーでローカル IPv4 アドレスまたはインターフェイス インデックスを常に指定することをお勧めします。 これは、複数のネットワーク インターフェイスと複数のパブリック IPv4 アドレスを持つコンピューターで特に重要です。

IPv4 マルチキャストに使用される既定のインターフェイスは、Windows のネットワーク スタックによって決まります。 アプリケーションは、 GetIpForwardTable 関数を使用して IPv4 ルーティング テーブルを取得する IPv4 マルチキャストに使用される既定のインターフェイスを決定できます。 宛先 IP アドレスのルーティング メトリックの値が 224.0.0.0 のネットワーク インターフェイスは、IPv4 マルチキャストの既定のインターフェイスです。 次のコマンドを使用して、コマンド プロンプトからルーティング テーブルを表示することもできます。

route print

IP_MULTICAST_IF ソケット オプションを使用して、IPv4 マルチキャスト パケットを送信する既定のインターフェイスを設定できます。 このソケット オプションでは、IPv4 マルチキャスト パケットの受信に使用される既定のインターフェイスは変更されません。

一般的な IPv4 マルチキャスト アプリケーションでは 、ip_mreq_source 構造と共に IP_ADD_SOURCE_MEMBERSHIP ソケット オプションを使用して、マルチキャスト グループに参加し、特定のインターフェイスでマルチキャスト パケットをリッスンします。 IP_MULTICAST_IF ソケット オプションを使用して、IPv4 マルチキャスト パケットをマルチキャスト グループに送信するインターフェイスを設定します。 最も一般的なシナリオは、マルチキャスト グループに対して同じインターフェイスでリッスンして送信するマルチキャスト アプリケーションです。 1 つのソケットをリッスンし、1 つ以上のソケットを送信するマルチキャスト アプリケーションで、複数のソケットを使用できます。

Windows Vista 以降用にリリースされた Microsoft Windows ソフトウェア開発キット (SDK) では、ヘッダー ファイルのorganizationが変更され、ws2ipdef.h ヘッダー ファイルに自動的に含まれる Ws2ipdef.h ヘッダー ファイルでip_mreq_source構造が定義されています。 Ws2ipdef.h ヘッダー ファイルを直接使用しないでください。

メモIP_MREQ_SOURCEおよびPIP_MREQ_SOURCE派生構造体は、Windows Vista 以降でリリースされた Windows SDK でのみ定義されます。 ip_mreq_source構造は、以前のバージョンの Windows SDK で使用する必要があります。
 

要件

   
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
Header ws2ipdef.h (Ws2tcpip.h を含む)

関連項目

GROUP_REQ

GROUP_SOURCE_REQ

GetAdaptersAddresses

GetIpForwardTable

IPPROTO_IP ソケット オプション

マルチキャスト プログラミング

ソケット オプション

ip_mreq

ip_msfilter

ipv6_mreq