structure IP_MREQ (ws2ipdef.h)
La structure ip_mreq fournit des informations de groupe de multidiffusion pour les adresses IPv4.
Syntaxe
typedef struct ip_mreq {
IN_ADDR imr_multiaddr;
IN_ADDR imr_interface;
} IP_MREQ, *PIP_MREQ;
Membres
imr_multiaddr
Adresse du groupe de multidiffusion IPv4.
imr_interface
Adresse IPv4 locale de l’interface ou index d’interface sur lequel le groupe de multidiffusion doit être joint ou supprimé. Cette valeur est dans l’ordre des octets réseau. Si ce membre spécifie une adresse IPv4 de 0.0.0.0, l’interface de multidiffusion IPv4 par défaut est utilisée.
Utiliser un index d’interface de 1 serait identique à une adresse IP de 0.0.0.1.
Remarques
La structure ip_mreq est utilisée avec les adresses IPv4. La structure ip_mreq est utilisée avec les options de socket IP_ADD_MEMBERSHIP et IP_DROP_MEMBERSHIP .
La structure ip_mreq et les structures associées utilisées pour la programmation multidiffusion IPv4 sont basées sur les recommandations de l’IETF dans les sections 4 et 8.1 de la RFC 3768. Pour plus d’informations, consultez http://www.ietf.org/rfc/rfc3678.txt.
Pour plus de fonctionnalités de multidiffusion configurables avec IPv4, utilisez la structure ip_mreq_source . Pour plus d’informations, consultez Programmation multidiffusion .
Sur Windows Vista et versions ultérieures, un ensemble d’options de socket sont disponibles pour la programmation multidiffusion qui prend en charge les adresses IPv6 et IPv4. Ces options de socket sont indépendantes des adresses IP et peuvent être utilisées sur IPv6 et IPv4. Ces options indépendantes de l’adresse IP utilisent les structures GROUP_REQ et GROUP_SOURCE_REQ et sont les options de socket préférées pour la programmation multidiffusion sur Windows Vista et versions ultérieures.
La structure ip_mreq est l’équivalent IPv4 de la structure de ipv6_mreq basée sur IPv6.
Le membre imr_interface peut être un index d’interface. Toute adresse IP dans le bloc 0.x.x.x (premier octet de 0) à l’exception de l’adresse IP 0.0.0.0 est traitée comme un index d’interface. Un index d’interface est un nombre 24 bits. Le bloc d’adresse IPv4 0.0.0/8 n’est pas utilisé (cette plage est réservée). La fonction GetAdaptersAddresses peut être utilisée pour obtenir des informations d’index d’interface à utiliser pour le membre imr_interface .
Il est recommandé de toujours spécifier une adresse IPv4 locale ou un index d’interface dans le imr_interface membre de la structure ip_mreq , plutôt que d’utiliser l’interface par défaut. Cela est particulièrement important sur les ordinateurs avec plusieurs interfaces réseau et plusieurs adresses IPv4 publiques.
L’interface par défaut utilisée pour la multidiffusion IPv4 est déterminée par la pile réseau dans Windows. Une application peut déterminer l’interface par défaut utilisée pour la multidiffusion IPv4 à l’aide de la fonction GetIpForwardTable pour récupérer la table de routage IPv4. L’interface réseau avec la valeur la plus faible pour la métrique de routage pour une adresse IP de destination de 224.0.0.0 est l’interface par défaut pour la multidiffusion IPv4. La table de routage peut également être affichée à partir de l’invite de commandes avec la commande suivante :
impression de routage
L’option de socket IP_MULTICAST_IF peut être utilisée pour définir l’interface par défaut pour envoyer des paquets de multidiffusion IPv4. Cette option de socket ne modifie pas l’interface par défaut utilisée pour recevoir les paquets de multidiffusion IPv4.
Une application de multidiffusion IPv4 classique utilise l’option de socket IP_ADD_MEMBERSHIP avec la structure ip_mreq pour rejoindre un groupe de multidiffusion et écouter les paquets de multidiffusion sur une interface spécifique. L’option de socket IP_MULTICAST_IF est utilisée pour définir l’interface pour envoyer des paquets de multidiffusion IPv4 au groupe de multidiffusion. Le scénario le plus courant serait une application de multidiffusion qui écoute et envoie sur la même interface pour un groupe de multidiffusion. Plusieurs sockets peuvent être utilisés par une application de multidiffusion avec un socket pour l’écoute et un ou plusieurs sockets pour l’envoi.
Sur le Microsoft Kit de développement logiciel Windows (Kit SDK Windows) (SDK) publié pour Windows Vista et versions ultérieures, la organization des fichiers d’en-tête a changé et la structure ip_mreq est définie dans le fichier d’en-tête Ws2ipdef.h qui est automatiquement inclus dans le fichier d’en-tête Ws2tcpip.h. Les fichiers d’en-tête Ws2ipdef.h ne doivent jamais être utilisés directement.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau uniquement] |
En-tête | ws2ipdef.h (include Ws2tcpip.h) |