다음을 통해 공유


IP_MSFILTER 구조체(ws2ipdef.h)

ip_msfilter 구조는 IPv4 주소에 대한 멀티캐스트 필터링 매개 변수를 제공합니다.

구문

typedef struct ip_msfilter {
  IN_ADDR             imsf_multiaddr;
  IN_ADDR             imsf_interface;
  MULTICAST_MODE_TYPE imsf_fmode;
  ULONG               imsf_numsrc;
  IN_ADDR             imsf_slist[1];
} IP_MSFILTER, *PIP_MSFILTER;

멤버

imsf_multiaddr

멀티캐스트 그룹의 IPv4 주소입니다.

imsf_interface

인터페이스의 로컬 IPv4 주소 또는 멀티캐스트 그룹을 필터링해야 하는 인터페이스 인덱스입니다. 이 값은 네트워크 바이트 순서입니다. 이 멤버가 0.0.0.0의 IPv4 주소를 지정하는 경우 기본 IPv4 멀티캐스트 인터페이스가 사용됩니다.

인터페이스 인덱스 1을 사용하려면 0.0.0.1의 IP 주소와 동일합니다.

imsf_fmode

사용할 멀티캐스트 필터 모드입니다. 이 매개 변수는 특정 멀티캐스트 원본을 포함하도록 MCAST_INCLUDE(값 0) 또는 지정된 원본에서 트래픽을 제외하는 MCAST_EXCLUDE(값 1)일 수 있습니다.

Windows Server 2003 및 Windows XP에서 이러한 값은 Ws2tcpip.h 헤더 파일에 정의되어 있습니다.

Windows Vista 이상에서 이러한 값은 Ws2ipdef.h 헤더 파일에 정의된 MULTICAST_MODE_TYPE 열거형의 열거형 값으로 정의됩니다.

imsf_numsrc

imsf_slist 멤버의 원본 수입니다.

imsf_slist[1]

포함하거나 제외할 IPv4 멀티캐스트 원본 주소를 지정하는 in_addr 구조의 배열입니다.

설명

ip_msfilter 구조체는 IPv4 주소와 함께 사용됩니다. ip_msfilter 구조는 SIO_GET_MULTICAST_FILTER SIO_SET_MULTICAST_FILTER IOCTL에 대한 인수로 전달됩니다.

IPv4 멀티캐스트 프로그래밍에 사용되는 ip_msfilter 구조 및 관련 구조는 RFC 3768의 섹션 4 및 8.1에서 IETF 권장 사항을 기반으로 합니다. 자세한 내용은 http://www.ietf.org/rfc/rfc3678.txt를 참조하세요.

Windows Vista 이상에서는 IPv6 및 IPv4 주소를 지원하는 멀티캐스트 프로그래밍에 소켓 옵션 집합을 사용할 수 있습니다. 이러한 소켓 옵션은 IP에 구애받지 않으며 IPv6 및 IPv4 모두에서 사용할 수 있습니다. 이러한 IP 독립적 옵션은 GROUP_REQGROUP_SOURCE_REQ 구조와 SIOCSMSFILTERSIOCGMSFILTER IOCTL을 사용합니다. 이러한 옵션은 Windows Vista 이상에서 멀티캐스트 프로그래밍을 위한 기본 소켓 옵션 및 IOCTL입니다.

imsf_interface 멤버는 인터페이스 인덱스일 수 있습니다. 0.0.0.0의 IPv4 주소를 제외한 0.x.x.x 블록의 모든 IPv4 주소(0의 첫 번째 옥텟)는 인터페이스 인덱스로 처리됩니다. 인터페이스 인덱스는 24비트 숫자입니다. 0.0.0.0/8 IPv4 주소 블록은 사용되지 않습니다(이 범위는 예약되어 있습니다). GetAdaptersAddresses 함수를 사용하여 imsf_interface 멤버에 사용할 인터페이스 인덱스 정보를 가져올 수 있습니다.

로컬 IPv4 주소 또는 인터페이스 인덱스는 항상 기본 인터페이스를 사용하는 대신 ip_msfilter 구조체의 imsf_interface 멤버에 지정하는 것이 좋습니다. 이는 여러 네트워크 인터페이스 및 여러 공용 IPv4 주소가 있는 컴퓨터에서 특히 중요합니다.

IPv4 멀티캐스트에 사용되는 기본 인터페이스는 Windows의 네트워킹 스택에 의해 결정됩니다. 애플리케이션은 GetIpForwardTable 함수를 사용하여 IPv4 라우팅 테이블을 검색하는 IPv4 멀티캐스트에 사용되는 기본 인터페이스를 확인할 수 있습니다. 대상 IP 주소의 라우팅 메트릭 값이 224.0.0.0인 네트워크 인터페이스는 IPv4 멀티캐스트의 기본 인터페이스입니다. 다음 명령을 사용하여 명령 프롬프트에서 라우팅 테이블을 표시할 수도 있습니다.

경로 인쇄

IP_MULTICAST_IF 소켓 옵션을 사용하여 IPv4 멀티캐스트 패킷을 보내도록 기본 인터페이스를 설정할 수 있습니다. 이 소켓 옵션은 IPv4 멀티캐스트 패킷을 수신하는 데 사용되는 기본 인터페이스를 변경하지 않습니다.

일반적인 IPv4 멀티캐스트 애플리케이션은 ip_mreq 구조와 함께 IP_ADD_MEMBERSHIP 소켓 옵션을 사용하거나 ip_mreq_source 구조와 함께 IP_ADD_SOURCE_MEMBERSHIP 소켓 옵션을 사용하여 멀티캐스트 그룹을 조인하고 특정 인터페이스에서 멀티캐스트 패킷을 수신 대기합니다. IP_MULTICAST_IF 소켓 옵션은 인터페이스를 설정하여 IPv4 멀티캐스트 패킷을 멀티캐스트 그룹으로 보내는 데 사용됩니다. 가장 일반적인 시나리오는 멀티캐스트 그룹에 대해 동일한 인터페이스에서 수신 대기하고 보내는 멀티캐스트 애플리케이션입니다. 멀티캐스트 애플리케이션에서 수신 대기용 소켓 1개와 송신을 위한 하나 이상의 소켓이 있는 여러 소켓을 사용할 수 있습니다.

Windows Vista 이상용으로 릴리스된 Microsoft SDK(Windows 소프트웨어 개발 키트)에서 헤더 파일의 organization 변경되었으며 ip_msfilter 구조는 Ws2tcpip.h 헤더 파일에 자동으로 포함된 Ws2ipdef.h 헤더 파일에 정의됩니다. Ws2ipdef.h 헤더 파일은 직접 사용하면 안 됩니다.

참고IP_MSFILTERPIP_MSFILTER 파생 구조는 Windows Vista 이상에서 릴리스된 Windows SDK에서만 정의됩니다. ip_msfilter 구조체는 이전 버전의 Windows SDK에서 사용해야 합니다.
 

요구 사항

   
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
머리글 ws2ipdef.h(Ws2tcpip.h 포함)

참고 항목

최종 상태 기반 멀티캐스트 프로그래밍

GROUP_FILTER

GROUP_REQ

GROUP_SOURCE_REQ

GetAdaptersAddresses

GetIpForwardTable

IPPROTO_IP 소켓 옵션

MULTICAST_MODE_TYPE

멀티캐스트 프로그래밍

소켓 옵션

ip_mreq

ip_mreq_source