Share via


IP_MSFILTER-Struktur (ws2ipdef.h)

Die ip_msfilter-Struktur stellt Multicastfilterparameter für IPv4-Adressen bereit.

Syntax

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;

Member

imsf_multiaddr

Die IPv4-Adresse der Multicastgruppe.

imsf_interface

Die lokale IPv4-Adresse der Schnittstelle oder der Schnittstellenindex, nach dem die Multicastgruppe gefiltert werden soll. Dieser Wert befindet sich in der Reihenfolge des Netzwerkbytes. Wenn dieses Member die IPv4-Adresse 0.0.0.0 angibt, wird die Standard-IPv4-Multicastschnittstelle verwendet.

Die Verwendung eines Schnittstellenindexes von 1 wäre identisch mit einer IP-Adresse von 0.0.0.1.

imsf_fmode

Der zu verwendende Multicastfiltermodus. Dieser Parameter kann entweder MCAST_INCLUDE (Wert von 0) sein, um bestimmte Multicastquellen einzuschließen, oder MCAST_EXCLUDE (Wert 1), um Datenverkehr aus angegebenen Quellen auszuschließen.

Unter Windows Server 2003 und Windows XP werden diese Werte in der Headerdatei Ws2tcpip.h definiert.

Unter Windows Vista und höher werden diese Werte als Enumerationswerte in der MULTICAST_MODE_TYPE-Enumeration definiert, die in der Headerdatei Ws2ipdef.h definiert ist.

imsf_numsrc

Die Anzahl der Quellen im imsf_slist-Member .

imsf_slist[1]

Ein Array von in_addr Strukturen, die die IPv4-Multicastquelladressen angeben, die eingeschlossen oder ausgeschlossen werden sollen.

Hinweise

Die ip_msfilter-Struktur wird mit IPv4-Adressen verwendet. Die ip_msfilter-Struktur wird als Argument für die SIO_GET_MULTICAST_FILTER und SIO_SET_MULTICAST_FILTER IOCTLs übergeben.

Die ip_msfilter Struktur und verwandte Strukturen, die für die IPv4-Multicastprogrammierung verwendet werden, basieren auf IETF-Empfehlungen in den Abschnitten 4 und 8.1 von RFC 3768. Weitere Informationen finden Sie unter http://www.ietf.org/rfc/rfc3678.txt.

Unter Windows Vista und höher sind eine Reihe von Socketoptionen für die Multicastprogrammierung verfügbar, die IPv6- und IPv4-Adressen unterstützen. Diese Socketoptionen sind IP-unabhängig und können sowohl für IPv6 als auch für IPv4 verwendet werden. Diese ip-unabhängigen Optionen verwenden die GROUP_REQ - und GROUP_SOURCE_REQ-Strukturen sowie die IOCTLs SIOCSMSFILTER und SIOCGMSFILTER . Dies sind die bevorzugten Socketoptionen und IOCTLs für die Multicastprogrammierung unter Windows Vista und höher.

Das imsf_interface Member kann ein Schnittstellenindex sein. Jede IPv4-Adresse im Block 0.x.x.x (erstes Oktett von 0) mit Ausnahme der IPv4-Adresse von 0.0.0.0 wird als Schnittstellenindex behandelt. Ein Schnittstellenindex ist eine 24-Bit-Zahl. Der IPv4-Adressblock 0.0.0.0/8 wird nicht verwendet (dieser Bereich ist reserviert). Die GetAdaptersAddresses-Funktion kann verwendet werden, um Schnittstellenindexinformationen abzurufen, die für das imsf_interface-Member verwendet werden sollen.

Es wird empfohlen, immer eine lokale IPv4-Adresse oder einen Schnittstellenindex im imsf_interface Member der ip_msfilter-Struktur anzugeben, anstatt die Standardschnittstelle zu verwenden. Dies ist besonders wichtig auf Computern mit mehreren Netzwerkschnittstellen und mehreren öffentlichen IPv4-Adressen.

Die Standardschnittstelle, die für IPv4-Multicast verwendet wird, wird durch den Netzwerkstapel in Windows bestimmt. Eine Anwendung kann die Standardschnittstelle für IPv4-Multicast mithilfe der GetIpForwardTable-Funktion ermitteln, um die IPv4-Routingtabelle abzurufen. Die Netzwerkschnittstelle mit dem niedrigsten Wert für die Routingmetrik für eine Ziel-IP-Adresse von 224.0.0.0 ist die Standardschnittstelle für IPv4-Multicast. Die Routingtabelle kann auch über die Eingabeaufforderung mit dem folgenden Befehl angezeigt werden:

Routendruck

Die IP_MULTICAST_IF Socketoption kann verwendet werden, um die Standardschnittstelle zum Senden von IPv4-Multicastpaketen festzulegen. Diese Socketoption ändert nicht die Standardschnittstelle, die zum Empfangen von IPv4-Multicastpaketen verwendet wird.

Eine typische IPv4-Multicastanwendung verwendet die IP_ADD_MEMBERSHIP Socketoption mit der ip_mreq-Struktur oder die IP_ADD_SOURCE_MEMBERSHIP Socketoption mit der ip_mreq_source-Struktur , um eine Multicastgruppe zu verknüpfen und auf Multicastpakete auf einer bestimmten Schnittstelle zu lauschen. Die IP_MULTICAST_IF Socketoption wird verwendet, um die Schnittstelle so festzulegen, dass IPv4-Multicastpakete an die Multicastgruppe gesendet werden. Das häufigste Szenario wäre eine Multicastanwendung, die auf derselben Schnittstelle für eine Multicastgruppe lauscht und sendet. Mehrere Sockets können von einer Multicastanwendung mit einem Socket zum Lauschen und einem oder mehreren Sockets zum Senden verwendet werden.

Im Microsoft Windows Software Development Kit (SDK), das für Windows Vista und höher veröffentlicht wurde, wurde die organization von Headerdateien geändert, und die ip_msfilter-Struktur wird in der Ws2ipdef.h-Headerdatei definiert, die automatisch in der Headerdatei Ws2tcpip.h enthalten ist. Die Ws2ipdef.h-Headerdateien sollten niemals direkt verwendet werden.

Hinweis Die IP_MSFILTER und PIP_MSFILTER abgeleiteten Strukturen werden nur im Windows SDK definiert, das mit Windows Vista und höher veröffentlicht wurde. Die ip_msfilter-Struktur sollte in früheren Versionen des Windows SDK verwendet werden.
 

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Kopfzeile ws2ipdef.h (include Ws2tcpip.h)

Weitere Informationen

Final-zustandsbasierte Multicastprogrammierung

GROUP_FILTER

GROUP_REQ

GROUP_SOURCE_REQ

GetAdaptersAddresses

GetIpForwardTable

IPPROTO_IP Socketoptionen

MULTICAST_MODE_TYPE

Multicastprogrammierung

Socketoptionen

ip_mreq

ip_mreq_source