IPV6_MREQ struttura (ws2ipdef.h)
La struttura ipv6_mreq fornisce informazioni sul gruppo multicast per gli indirizzi IPv6.
Sintassi
typedef struct ipv6_mreq {
IN6_ADDR ipv6mr_multiaddr;
ULONG ipv6mr_interface;
} IPV6_MREQ, *PIPV6_MREQ;
Members
ipv6mr_multiaddr
Indirizzo del gruppo multicast IPv6.
ipv6mr_interface
Indice dell'interfaccia dell'interfaccia locale in cui deve essere aggiunto o eliminato il gruppo multicast. Se questo membro specifica un indice di interfaccia pari a 0, viene usata l'interfaccia multicast predefinita.
Commenti
La struttura ipv6_mreq viene usata con indirizzi IPv6. La struttura ipv6_mreq viene usata con le opzioni socket IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP, IPV6_JOIN_GROUP e IPV6_LEAVE_GROUP socket. Le opzioni di IPV6_JOIN_GROUP e socket IPV6_ADD_MEMBERSHIP sono definite come uguali. Le opzioni di IPV6_LEAVE_GROUPe socket IPV6_DROP_MEMBERSHIP sono definite come uguali.
In Windows Vista e versioni successive sono disponibili un set di opzioni socket per la programmazione multicast che supporta gli indirizzi IPv6 e IPv4. Queste opzioni di socket sono agnostiche e possono essere usate sia in IPv6 che in IPv4. Queste opzioni ip agnostiche usano le GROUP_REQ e le strutture GROUP_SOURCE_REQ e sono le opzioni di socket preferite per la programmazione multicast in Windows Vista e versioni successive.
La struttura ipv6_mreq è l'equivalente IPv6 della struttura di ip_mreq basata su IPv4.
La funzione GetAdaptersAddresses può essere usata per ottenere informazioni sull'indice dell'interfaccia necessarie per il membro ipv6mr_interface .
La struttura ipv6_mreq e le opzioni del socket a livello di IPPROTO_IPV6 che usano questa struttura sono valide solo per datagram e socket non elaborati (il tipo di socket deve essere SOCK_DGRAM o SOCK_RAW).
È consigliabile specificare sempre un indice dell'interfaccia IPv6 locale nel membro ipv6mr_interface della strutturaipv6_mreq anziché usare l'interfaccia predefinita. Ciò è particolarmente importante nei computer con più interfacce di rete e più indirizzi IPv6 pubblici.
L'interfaccia predefinita usata per il multicast IPv6 è determinata dallo stack di rete in Windows. In Windows Vista e versioni successive un'applicazione può determinare l'interfaccia predefinita usata per il multicast IPv6 usando la funzione GetIpForwardTable2 per recuperare la tabella di routing IPv6. L'interfaccia di rete con il valore più basso per la metrica di routing per un indirizzo multicast IPv6 di destinazione (il blocco indirizzi IPv6 FF00::/8 IPv6) è l'interfaccia predefinita per il multicast IPv6. La tabella di routing può essere visualizzata anche dal prompt dei comandi con il comando seguente:
stampa route
L'opzione IPV6_MULTICAST_IF socket può essere usata per impostare l'interfaccia predefinita per inviare pacchetti multicast IPv6. Questa opzione socket non modifica l'interfaccia predefinita usata per ricevere pacchetti multicast IPv6.
Un'applicazione multicast IPv6 tipica userebbe l'opzione IPV6_ADD_MEMBERSHIP o socket IPV6_JOIN_GROUP con la strutturaipv6_mreq per aggiungere un gruppo multicast e ascoltare i pacchetti multicast in un'interfaccia specifica. L'opzione IPV6_MULTICAST_IF socket verrà usata per impostare l'interfaccia per inviare pacchetti multicast IPv6 al gruppo multicast. Lo scenario più comune è un'applicazione multicast in ascolto e invia nella stessa interfaccia per un gruppo multicast. Più socket possono essere usati da un'applicazione multicast con un socket per l'ascolto e uno o più socket per l'invio.
Nella versione di Microsoft Windows Software Development Kit (Windows SDK) (SDK) per Windows Vista e versioni successive l'organizzazione dei file di intestazione è stata modificata e la struttura ipv6_mreq viene definita nel file di intestazione Ws2ipdef.h che viene incluso automaticamente nel file di intestazione Ws2tcpip.h. I file di intestazione Ws2ipdef.h non devono mai essere usati direttamente.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Intestazione | ws2ipdef.h (includere Ws2tcpip.h) |