structure IP_MREQ_SOURCE (ws2ipdef.h)
La structure ip_mreq_source fournit des informations de groupe de multidiffusion pour les adresses IPv4.
Syntaxe
typedef struct ip_mreq_source {
IN_ADDR imr_multiaddr;
IN_ADDR imr_sourceaddr;
IN_ADDR imr_interface;
} IP_MREQ_SOURCE, *PIP_MREQ_SOURCE;
Membres
imr_multiaddr
Adresse du groupe de multidiffusion IPv4.
imr_sourceaddr
Adresse de la source de multidiffusion IPv4.
imr_interface
Adresse IPv4 locale de l’interface ou index d’interface sur lequel le groupe de multidiffusion doit être joint, supprimé, bloqué ou débloqué. Cette valeur est dans l’ordre d’octet du 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_source est utilisée avec les adresses IPv4. La structure ip_mreq_source est utilisée avec les options de socket IP_ADD_SOURCE_MEMBERSHIP, IP_BLOCK_SOURCE, IP_DROP_SOURCE_MEMBERSHIP et IP_UNBLOCK_SOURCE .
La structure ip_mreq_source 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.
Sur Windows Vista et versions ultérieures, un ensemble d’options de socket est disponible pour la programmation de multidiffusion qui prend en charge les adresses IPv6 et IPv4. Ces options de socket sont indépendantes de l’adresse 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. Pour plus d’informations, consultez Programmation multidiffusion .
Pour des fonctionnalités de multidiffusion moins configurables avec IPv4, utilisez la structure ip_mreq . Pour IPv6, utilisez la structure ipv6_mreq .
Le membre imr_interface peut être un index d’interface. Toute adresse IP du 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_source , 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 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 des paquets de multidiffusion IPv4.
Une application de multidiffusion IPv4 classique utilise l’option de socket IP_ADD_SOURCE_MEMBERSHIP avec la structure ip_mreq_source pour joindre 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 afin d’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.
Dans le Kit de développement logiciel (SDK) Microsoft Windows publié pour Windows Vista et versions ultérieures, la organization des fichiers d’en-tête a changé et la structure ip_mreq_source 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.
Spécifications
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) |