IP_MSFILTER構造体 (ws2ipdef.h)
ip_msfilter構造では、IPv4 アドレスのマルチキャスト フィルタリング パラメーターが提供されます。
構文
typedef struct ip_msfilter {
IN_ADDR imsf_multiaddr;
IN_ADDR imsf_interface;
MULTICAST_MODE_TYPE imsf_fmode;
ULONG imsf_numsrc;
IN_ADDR imsf_slist[1];
} IP_MSFILTER, *PIP_MSFILTER;
メンバー
imsf_multiaddr
マルチキャスト グループの IPv4 アドレス。
imsf_interface
マルチキャスト グループをフィルター処理する必要があるインターフェイスまたはインターフェイス インデックスのローカル IPv4 アドレス。 この値はネットワークのバイト順です。 このメンバーが IPv4 アドレス 0.0.0.0 を指定した場合、既定の IPv4 マルチキャスト インターフェイスが使用されます。
インターフェイス インデックス 1 を使用するには、IP アドレス 0.0.0.1 と同じになります。
imsf_fmode
使用するマルチキャスト フィルター モード。 このパラメーターには、特定のマルチキャスト ソースを含めるMCAST_INCLUDE (値 0) か、指定したソースからトラフィックを除外するMCAST_EXCLUDE (値 1) を指定できます。
Windows Server 2003 および Windows XP では、これらの値は Ws2tcpip.h ヘッダー ファイルで定義されます。
Windows Vista 以降では、これらの値は Ws2ipdef.h ヘッダー ファイルで定義されているMULTICAST_MODE_TYPE列挙の列挙値として定義されます。
imsf_numsrc
imsf_slist メンバー内のソースの数。
imsf_slist[1]
含めるか除外する IPv4 マルチキャスト ソース アドレスを指定するin_addr構造体の配列。
解説
ip_msfilter構造は、IPv4 アドレスと共に使用されます。 ip_msfilter構造体は、SIO_GET_MULTICAST_FILTERとSIO_SET_MULTICAST_FILTER IOCTL の引数として渡されます。
IPv4 マルチキャスト プログラミングに使用される ip_msfilter 構造と関連する構造体は、RFC 3768 のセクション 4 と 8.1 の IETF の推奨事項に基づいています。 詳細については、「http://www.ietf.org/rfc/rfc3678.txt」を参照してください。
Windows Vista 以降では、IPv6 アドレスと IPv4 アドレスをサポートするマルチキャスト プログラミングに一連のソケット オプションを使用できます。 これらのソケット オプションは IP に依存せず、IPv6 と IPv4 の両方で使用できます。 これらの IP に依存しないオプションでは、 GROUP_REQ と GROUP_SOURCE_REQ 構造体と SIOCSMSFILTER および SIOCGMSFILTER IOCTL が使用されます。 これらは、Windows Vista 以降でのマルチキャスト プログラミングに推奨されるソケット オプションと IOCTL です。
imsf_interface メンバーにはインターフェイス インデックスを指定できます。 0.0.0.0 の IPv4 アドレスを除き、0.x.x.x ブロック内の IPv4 アドレス (0 の最初のオクテット) は、インターフェイス インデックスとして扱われます。 インターフェイス インデックスは 24 ビット番号です。 0.0.0.0/8 IPv4 アドレス ブロックは使用されません (この範囲は予約されています)。 GetAdaptersAddresses 関数を使用すると、imsf_interface メンバーに使用するインターフェイス インデックス情報を取得できます。
ローカル IPv4 アドレスまたはインターフェイス インデックスは、既定のインターフェイスを使用するのではなく、ip_msfilter構造体の imsf_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_ADD_SOURCE_MEMBERSHIP ソケット オプションと ip_mreq_source 構造を使用して、マルチキャスト グループに参加し、特定のインターフェイスでマルチキャスト パケットをリッスンします。 IP_MULTICAST_IF ソケット オプションを使用して、IPv4 マルチキャスト パケットをマルチキャスト グループに送信するインターフェイスを設定します。 最も一般的なシナリオは、マルチキャスト グループの同じインターフェイスでリッスンして送信するマルチキャスト アプリケーションです。 マルチキャスト アプリケーションでは、リッスン用のソケットが 1 つ、送信用に 1 つ以上のソケットが含まれた複数のソケットが使用される場合があります。
Windows Vista 以降用にリリースされた Microsoft Windows ソフトウェア開発キット (SDK) では、ヘッダー ファイルのorganizationが変更され、ws2ipdef.h ヘッダー ファイルに自動的に含まれる Ws2ipdef.h ヘッダー ファイルでip_msfilter構造が定義されます。 Ws2ipdef.h ヘッダー ファイルを直接使用しないでください。
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
Header | ws2ipdef.h (Ws2tcpip.h を含む) |