Compartir a través de


estructura IP_MREQ (ws2ipdef.h)

La estructura ip_mreq proporciona información de grupo de multidifusión para direcciones IPv4.

Sintaxis

typedef struct ip_mreq {
  IN_ADDR imr_multiaddr;
  IN_ADDR imr_interface;
} IP_MREQ, *PIP_MREQ;

Miembros

imr_multiaddr

Dirección del grupo de multidifusión IPv4.

imr_interface

Dirección IPv4 local de la interfaz o el índice de interfaz en el que se debe unir o quitar el grupo de multidifusión. Este valor está en orden de bytes de red. Si este miembro especifica una dirección IPv4 de 0.0.0.0, se usa la interfaz de multidifusión IPv4 predeterminada.

Para usar un índice de interfaz de 1 sería el mismo que una dirección IP de 0.0.0.1.

Comentarios

La estructura ip_mreq se usa con direcciones IPv4. La estructura de ip_mreq se usa con las opciones de socket IP_ADD_MEMBERSHIP y IP_DROP_MEMBERSHIP .

La estructura de ip_mreq y las estructuras relacionadas usadas para la programación de multidifusión IPv4 se basan en las recomendaciones de IETF en las secciones 4 y 8.1 de RFC 3768. Para obtener más información, vea http://www.ietf.org/rfc/rfc3678.txt.

Para obtener funcionalidades de multidifusión más configurables con IPv4, use la estructura de ip_mreq_source . Consulte Programación de multidifusión para obtener más información.

En Windows Vista y versiones posteriores, hay un conjunto de opciones de socket disponibles para la programación de multidifusión que admite direcciones IPv6 e IPv4. Estas opciones de socket son independientes de IP y se pueden usar en IPv6 e IPv4. Estas opciones independientes de IP usan el GROUP_REQ y las estructuras de GROUP_SOURCE_REQ y son las opciones de socket preferidas para la programación de multidifusión en Windows Vista y versiones posteriores.

La estructura ip_mreq es el equivalente IPv4 de la estructura de ipv6_mreq basada en IPv6.

El miembro imr_interface puede ser un índice de interfaz. Cualquier dirección IP del bloque 0.x.x.x (primer octeto de 0), excepto la dirección IP de 0.0.0.0 se trata como un índice de interfaz. Un índice de interfaz es un número de 24 bits. El bloque de direcciones IPv4 0.0.0.0.0/8 no se usa (este intervalo está reservado). La función GetAdaptersAddresses se puede usar para obtener información de índice de interfaz que se usará para el miembro imr_interface .

Se recomienda especificar siempre un índice de interfaz o dirección IPv4 local en el miembro imr_interface de la estructura ip_mreq , en lugar de usar la interfaz predeterminada. Esto es especialmente importante en los equipos con varias interfaces de red y varias direcciones IPv4 públicas.

La interfaz predeterminada usada para la multidifusión IPv4 viene determinada por la pila de redes en Windows. Una aplicación puede determinar la interfaz predeterminada usada para la multidifusión IPv4 mediante la función GetIpForwardTable para recuperar la tabla de enrutamiento IPv4. La interfaz de red con el valor más bajo para la métrica de enrutamiento para una dirección IP de destino de 224.0.0.0.0 es la interfaz predeterminada para la multidifusión IPv4. La tabla de enrutamiento también se puede mostrar desde el símbolo del sistema con el siguiente comando:

impresión de ruta

La opción de socket IP_MULTICAST_IF se puede usar para establecer la interfaz predeterminada para enviar paquetes de multidifusión IPv4. Esta opción de socket no cambia la interfaz predeterminada usada para recibir paquetes de multidifusión IPv4.

Una aplicación de multidifusión IPv4 típica usaría la opción de socket IP_ADD_MEMBERSHIP con la estructura ip_mreq para unir un grupo de multidifusión y escuchar paquetes de multidifusión en una interfaz específica. La opción de socket IP_MULTICAST_IF se usaría para establecer la interfaz para enviar paquetes de multidifusión IPv4 al grupo de multidifusión. El escenario más común sería una aplicación de multidifusión que escucha y envía en la misma interfaz para un grupo de multidifusión. Una aplicación de multidifusión puede usar varios sockets con un socket para escuchar y uno o varios sockets para enviar.

En microsoft Kit de desarrollo de software de Windows (SDK) publicado para Windows Vista y versiones posteriores, la organización de archivos de encabezado ha cambiado y la estructura de ip_mreq se define en el archivo de encabezado Ws2ipdef.h que se incluye automáticamente en el archivo de encabezado Ws2tcpip.h. Los archivos de encabezado Ws2ipdef.h nunca deben usarse directamente.

Nota Las estructuras derivadas IP_MREQ y PIP_MREQ solo se definen en el Windows SDK publicado con Windows Vista y versiones posteriores. La estructura ip_mreq debe usarse en versiones anteriores de la Windows SDK.
 

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Encabezado ws2ipdef.h (incluya Ws2tcpip.h)

Consulte también

GROUP_REQ

GROUP_SOURCE_REQ

GetAdaptersAddresses

GetIpForwardTable

Opciones de socket de IPPROTO_IP

Programación de multidifusión

Opciones de socket

ip_mreq_source

ip_msfilter

ipv6_mreq