IP_MREQ struttura (ws2ipdef.h)
La struttura ip_mreq fornisce informazioni sul gruppo multicast per gli indirizzi IPv4.
Sintassi
typedef struct ip_mreq {
IN_ADDR imr_multiaddr;
IN_ADDR imr_interface;
} IP_MREQ, *PIP_MREQ;
Members
imr_multiaddr
Indirizzo del gruppo multicast IPv4.
imr_interface
Indirizzo IPv4 locale dell'interfaccia o dell'indice dell'interfaccia in cui deve essere aggiunto o eliminato il gruppo multicast. Questo valore è in ordine di byte di rete. Se questo membro specifica un indirizzo IPv4 pari a 0.0.0.0,0, viene usata l'interfaccia multicast IPv4 predefinita.
Per usare un indice di interfaccia pari a 1 sarebbe uguale a un indirizzo IP pari a 0.0.0.1.
Commenti
La struttura ip_mreq viene usata con indirizzi IPv4. La struttura ip_mreq viene usata con le opzioniIP_ADD_MEMBERSHIP e IP_DROP_MEMBERSHIP socket.
La struttura ip_mreq e le strutture correlate usate per la programmazione multicast IPv4 si basano sulle raccomandazioni di IETF nelle sezioni 4 e 8.1 di RFC 3768. Per altre informazioni, vedere http://www.ietf.org/rfc/rfc3678.txt.
Per funzionalità multicast configurabili con IPv4, usare la struttura ip_mreq_source . Per altre informazioni, vedere Programmazione multicast .
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 ip_mreq è l'equivalente IPv4 della struttura di ipv6_mreq basata su IPv6.
Il membro imr_interface può essere un indice di interfaccia. Qualsiasi indirizzo IP nel blocco 0.x.x.x (primo ottetto di 0) ad eccezione dell'indirizzo IP 0.0.0.0.0 viene considerato come indice di interfaccia. Un indice di interfaccia è un numero a 24 bit. Il blocco indirizzi IPv4 0.0.0.0.0/8 non viene usato (questo intervallo è riservato). La funzione GetAdaptersAddresses può essere usata per ottenere informazioni sull'indice dell'interfaccia da usare per il membro imr_interface .
È consigliabile specificare sempre un indirizzo O un indice dell'interfaccia IPv4 locale nel membro imr_interface della strutturaip_mreq anziché usare l'interfaccia predefinita. Ciò è particolarmente importante nei computer con più interfacce di rete e più indirizzi IPv4 pubblici.
L'interfaccia predefinita usata per il multicast IPv4 è determinata dallo stack di rete in Windows. Un'applicazione può determinare l'interfaccia predefinita usata per il multicast IPv4 usando la funzione GetIpForwardTable per recuperare la tabella di routing IPv4. L'interfaccia di rete con il valore più basso per la metrica di routing per un indirizzo IP di destinazione pari a 224.0.0.0 è l'interfaccia predefinita per il multicast IPv4. La tabella di routing può essere visualizzata anche dal prompt dei comandi con il comando seguente:
stampa route
L'opzione IP_MULTICAST_IF socket può essere usata per impostare l'interfaccia predefinita per inviare pacchetti multicast IPv4. Questa opzione socket non modifica l'interfaccia predefinita usata per ricevere pacchetti multicast IPv4.
Un'applicazione multicast IPv4 tipica userebbe l'opzione socket IP_ADD_MEMBERSHIP con la struttura ip_mreq per aggiungere un gruppo multicast e ascoltare i pacchetti multicast in un'interfaccia specifica. L'opzione socket IP_MULTICAST_IF verrà usata per impostare l'interfaccia per inviare pacchetti multicast IPv4 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 ip_mreq viene definita nel file di intestazione Ws2ipdef.h 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) |