본문 바로가기

공부/tcp/ip 프로그래밍

14장 멀티캐스트 & 브로드캐스트

반응형

멀티캐스트와 브로드캐스트.pptx

멀티캐스트(udp방식)

 

 

 

 브로드캐스트(udp방식)

TTL(time to live)

int send_sock;

int time_live = 64;

send_sock = socket(PF_INET, SOCK_DGRAM, 0);

//TTL의 설정과 관련된 프로토콜의 레벨은 IPPROTO_IP, 옵션의 이름은 IP_MULTICAST_TTL

setsockopt(send_sock, IPPROTO_IP, IP_MULTICAST_TTL, (void*) &time_live, sizeof(time_live));

 

TTL = 패킷을 얼마나 멀리 전달할 것인가 결정하는 요소

라우터를 하나 거칠 때마다 1씩 감소, 값이 0이 되면 패킷은 더 이상 전달되지 못하고 소멸

 

멀티캐스트 그룹으로의 가입

그룹가입과 관련된 프로토콜의 레벨은 IPPROTO_IP, 옵션의 이름은 IP_ADD_MEMBERSHIP

int recv_sock;

struct ip_mreq join_adr;

recv_sock = socket(PF_INET, SOCK_DGRAM, 0);

join_adr.imr_multiaddr.s_addr = "멀티캐스트 그룹의 주소정보";

join_adr.imr_interface.s_addr = "그룹에 가입할 호스트의 주소정보";

setsockopt(recv_sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (void*) &join_adr, sizeof(join_adr));

 

struct ip_mreq

{

struct in_addr imr_multiaddr; //가입할 그룹의 ip주소

struct in_addr imr_interface; //그룹에 가입하는 소켓이 속한 호스트의 ip주소

}

 

브로드캐스트의 구현시 필요한 설정

int send_sock;

int bcast = 1; //SO_BROADCAST의 옵션정보를 1로 변경하기 위한 변수 초기화

send_sock = socket(PF_INET, SOCK_DGRAM, 0);

setsockopt(send_sock, SOL_SOCKET, SO_BROADCAST, (void*) &bcast, sizeof(bcast));

 

윈도우

헤더파일 ws2tcpip.h 추가

옵션 IP_MULTICAST_TTL과 구조체 ip_mreq의 선언시 필요

반응형