estrutura IP_MREQ_SOURCE (ws2ipdef.h)
A estrutura ip_mreq_source fornece informações de grupo multicast para endereços IPv4.
Sintaxe
typedef struct ip_mreq_source {
IN_ADDR imr_multiaddr;
IN_ADDR imr_sourceaddr;
IN_ADDR imr_interface;
} IP_MREQ_SOURCE, *PIP_MREQ_SOURCE;
Membros
imr_multiaddr
O endereço do grupo multicast IPv4.
imr_sourceaddr
O endereço da origem multicast IPv4.
imr_interface
O endereço IPv4 local da interface ou o índice de interface no qual o grupo multicast deve ser unido, descartado, bloqueado ou desbloqueado. Esse valor está na ordem de bytes de rede. Se esse membro especificar um endereço IPv4 de 0.0.0.0, a interface multicast IPv4 padrão será usada.
Usar um índice de interface de 1 seria o mesmo que um endereço IP de 0.0.0.1.
Comentários
A estrutura ip_mreq_source é usada com endereços IPv4. A estrutura ip_mreq_source é usada com as opções de soquete IP_ADD_SOURCE_MEMBERSHIP, IP_BLOCK_SOURCE, IP_DROP_SOURCE_MEMBERSHIP e IP_UNBLOCK_SOURCE .
A estrutura ip_mreq_source e as estruturas relacionadas usadas para programação multicast IPv4 são baseadas em recomendações de IETF nas seções 4 e 8.1 do RFC 3768. Para obter mais informações, consulte http://www.ietf.org/rfc/rfc3678.txt.
No Windows Vista e posteriores, um conjunto de opções de soquete está disponível para programação multicast que dá suporte a endereços IPv6 e IPv4. Essas opções de soquete são independentes de IP e podem ser usadas no IPv6 e no IPv4. Essas opções independentes de IP usam o GROUP_REQ e as estruturas de GROUP_SOURCE_REQ e são as opções de soquete preferenciais para programação multicast no Windows Vista e posterior. Consulte Programação multicast para obter mais informações.
Para recursos multicast menos configuráveis com IPv4, use a estrutura ip_mreq . Para IPv6, use a estrutura ipv6_mreq .
O membro imr_interface pode ser um índice de interface. Qualquer endereço IP no bloco 0.x.x.x (primeiro octeto de 0), exceto pelo endereço IP 0.0.0.0, é tratado como um índice de interface. Um índice de interface é um número de 24 bits. O bloco de endereços IPv4 0.0.0.0/8 não é usado (esse intervalo é reservado). A função GetAdaptersAddresses pode ser usada para obter informações de índice de interface a serem usadas para o membro imr_interface .
É recomendável que um endereço IPv4 local ou índice de interface sempre seja especificado no membro imr_interface da estrutura ip_mreq_source , em vez de usar a interface padrão. Isso é particularmente importante em computadores com vários adaptadores de rede e vários endereços IPv4 públicos.
A interface padrão usada para multicast IPv4 é determinada pela pilha de rede no Windows. Um aplicativo pode determinar a interface padrão usada para multicast IPv4 usando a função GetIpForwardTable para recuperar a tabela de roteamento IPv4. O adaptador de rede com o menor valor para a métrica de roteamento para um endereço IP de destino de 224.0.0.0 é a interface padrão para multicast IPv4. A tabela de roteamento também pode ser exibida no prompt de comando com o seguinte comando:
imprimir rota
A opção de soquete IP_MULTICAST_IF pode ser usada para definir a interface padrão para enviar pacotes multicast IPv4. Essa opção de soquete não altera a interface padrão usada para receber pacotes multicast IPv4.
Um aplicativo multicast IPv4 típico usaria a opção de soquete IP_ADD_SOURCE_MEMBERSHIP com a estrutura ip_mreq_source para unir um grupo multicast e escutar pacotes multicast em uma interface específica. A opção IP_MULTICAST_IF soquete seria usada para definir a interface para enviar pacotes multicast IPv4 para o grupo multicast. O cenário mais comum seria um aplicativo multicast que escuta e envia na mesma interface para um grupo multicast. Vários soquetes podem ser usados por um aplicativo multicast com um soquete para escuta e um ou mais soquetes para envio.
No Microsoft Windows Software Development Kit (SDK) lançado para Windows Vista e posterior, a organização dos arquivos de cabeçalho foi alterada e a estrutura de ip_mreq_source é definida no arquivo de cabeçalho Ws2ipdef.h , que é incluído automaticamente no arquivo de cabeçalho Ws2tcpip.h . Os arquivos de cabeçalho Ws2ipdef.h nunca devem ser usados diretamente.
Requisitos
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Cabeçalho | ws2ipdef.h (include Ws2tcpip.h) |