Freigeben über


IP_MREQ-Struktur (ws2ipdef.h)

Die ip_mreq-Struktur stellt Multicastgruppeninformationen für IPv4-Adressen bereit.

Syntax

typedef struct ip_mreq {
  IN_ADDR imr_multiaddr;
  IN_ADDR imr_interface;
} IP_MREQ, *PIP_MREQ;

Member

imr_multiaddr

Die Adresse der IPv4-Multicastgruppe.

imr_interface

Die lokale IPv4-Adresse der Schnittstelle oder der Schnittstellenindex, für den die Multicastgruppe verknüpft oder gelöscht 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.

Hinweise

Die ip_mreq-Struktur wird mit IPv4-Adressen verwendet. Die ip_mreq-Struktur wird mit den IP_ADD_MEMBERSHIP - und IP_DROP_MEMBERSHIP Socketoptionen verwendet.

Die ip_mreq 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.

Wenn Sie mehr konfigurierbare Multicastfunktionen mit IPv4 verwenden möchten, verwenden Sie die ip_mreq_source-Struktur . Weitere Informationen finden Sie unter Multicastprogrammierung .

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 die GROUP_SOURCE_REQ-Strukturen und sind die bevorzugten Socketoptionen für die Multicastprogrammierung unter Windows Vista und höher.

Die ip_mreq-Struktur ist das IPv4-Äquivalent der IPv6-basierten ipv6_mreq-Struktur .

Das imr_interface-Members kann ein Schnittstellenindex sein. Jede IP-Adresse im Block 0.x.x.x (erstes Oktett von 0) mit Ausnahme der IP-Adresse 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 imr_interface-Member verwendet werden sollen.

Es wird empfohlen, immer eine lokale IPv4-Adresse oder einen Schnittstellenindex im imr_interface Member der ip_mreq-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 würde die IP_ADD_MEMBERSHIP Socketoption mit der ip_mreq Struktur verwenden, 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.

Auf dem 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_mreq 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_MREQ- und PIP_MREQ abgeleiteten Strukturen werden nur für die Windows SDK definiert, die mit Windows Vista und höher veröffentlicht werden. Die ip_mreq-Struktur sollte in früheren Versionen der Windows SDK verwendet werden.
 

Anforderungen

Anforderung Wert
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

GROUP_REQ

GROUP_SOURCE_REQ

GetAdaptersAddresses

GetIpForwardTable

IPPROTO_IP Socketoptionen

Multicastprogrammierung

Socketoptionen

ip_mreq_source

ip_msfilter

ipv6_mreq