struttura IP_MREQ_SOURCE (ws2ipdef.h)

La struttura ip_mreq_source fornisce informazioni sui gruppi multicast per gli indirizzi IPv4.

Sintassi

typedef struct ip_mreq_source {
  IN_ADDR imr_multiaddr;
  IN_ADDR imr_sourceaddr;
  IN_ADDR imr_interface;
} IP_MREQ_SOURCE, *PIP_MREQ_SOURCE;

Members

imr_multiaddr

Indirizzo del gruppo multicast IPv4.

imr_sourceaddr

Indirizzo dell'origine multicast IPv4.

imr_interface

Indirizzo IPv4 locale dell'interfaccia o dell'indice dell'interfaccia in cui il gruppo multicast deve essere unito, eliminato, bloccato o sbloccato. Questo valore è in ordine di byte di rete. Se questo membro specifica un indirizzo IPv4 0.0.0.0, viene usata l'interfaccia multicast IPv4 predefinita.

Per usare un indice di interfaccia pari a 1 corrisponde a un indirizzo IP 0.0.0.1.

Commenti

La struttura ip_mreq_source viene usata con gli indirizzi IPv4. La struttura ip_mreq_source viene usata con le opzioni socket IP_ADD_SOURCE_MEMBERSHIP, IP_BLOCK_SOURCE, IP_DROP_SOURCE_MEMBERSHIP e IP_UNBLOCK_SOURCE .

La struttura ip_mreq_source 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.

In Windows Vista e versioni successive è disponibile un set di opzioni socket per la programmazione multicast che supporta gli indirizzi IPv6 e IPv4. Queste opzioni socket sono indipendenti dall'ip e possono essere usate sia in IPv6 che in IPv4. Queste opzioni indipendenti dall'IP usano la GROUP_REQ e le strutture GROUP_SOURCE_REQ e sono le opzioni socket preferite per la programmazione multicast in Windows Vista e versioni successive. Per altre informazioni, vedere Programmazione multicast .

Per funzionalità multicast meno configurabili con IPv4, usare la struttura ip_mreq . Per IPv6, usare la struttura ipv6_mreq .

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 viene considerato come indice di interfaccia. Un indice di interfaccia è un numero a 24 bit. Il blocco di indirizzi IPv4 0.0.0.0/0 non viene usato (questo intervallo è riservato). La funzione GetAdaptersAddresses può essere utilizzata per ottenere informazioni sull'indice dell'interfaccia da utilizzare per il membro imr_interface .

È consigliabile specificare sempre un indirizzo O un indice di interfaccia IPv4 locale nel membro imr_interface della struttura ip_mreq_source 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 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 percorso

L'opzione IP_MULTICAST_IF socket può essere usata per impostare l'interfaccia predefinita per l'invio di pacchetti multicast IPv4. Questa opzione socket non modifica l'interfaccia predefinita usata per ricevere pacchetti multicast IPv4.

Una tipica applicazione multicast IPv4 usa l'opzione socket IP_ADD_SOURCE_MEMBERSHIP con la struttura ip_mreq_source per unire un gruppo multicast e ascoltare i pacchetti multicast in un'interfaccia specifica. L'opzione socket IP_MULTICAST_IF verrebbe usata per impostare l'interfaccia per inviare pacchetti multicast IPv4 al gruppo multicast. Lo scenario più comune è un'applicazione multicast in ascolto e invio sulla 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.

In Microsoft Windows Software Development Kit (SDK) rilasciato per Windows Vista e versioni successive, l'organizzazione dei file di intestazione è stata modificata e la struttura ip_mreq_source è definita nel file di intestazione Ws2ipdef.h che viene automaticamente incluso nel file di intestazione Ws2tcpip.h . I file di intestazione Ws2ipdef.h non devono mai essere usati direttamente.

Nota Le strutture derivate IP_MREQ_SOURCE e PIP_MREQ_SOURCE vengono definite solo in Windows SDK rilasciato con Windows Vista e versioni successive. La struttura ip_mreq_source deve essere usata nelle versioni precedenti di Windows SDK.
 

Requisiti

   
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Intestazione ws2ipdef.h (include Ws2tcpip.h)

Vedi anche

GROUP_REQ

GROUP_SOURCE_REQ

GetAdaptersAddresses

GetIpForwardTable

Opzioni socket IPPROTO_IP

Programmazione multicast

Opzioni socket

ip_mreq

ip_msfilter

ipv6_mreq