728x90
멀티캐스트
- 멀티 캐스트는 그룹으로 관리되어 서버에서 데이터를 한번만 전송하면 그룹에 속하는 클라이언트가 데이터를 수신
- 멀티 캐스트로 전송하는 데이터를 받기 위해서는 그룹에 가입해야 함
- 멀티 캐스트는 연결의 개념이 아니기 때문에 UDP 기반으로 전송
- 라우터들에 의해 복사되어 전송
- 그룹 가입 후 recv
int main(int argc, char *argv[])
{
int recv_sock;
struct sockaddr_in adr;
struct ip_mreq join_adr;
recv_sock=socket(PF_INET, SOCK_DGRAM, 0);
...;
join_adr.imr_multiaddr.s_addr=inet_addr(argv[1]); // 가입할 그룹 주소
join_adr.imr_interface.s_addr=htonl(INADDR_ANY); // 본인의 주소
setsockopt(recv_sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (void*)&join_adr, sizeof(join_adr));
while(1)
{
str_len=recvfrom(recv_sock, buf, BUF_SIZE-1, 0, NULL, 0);
if(str_len<0) { break; }
buf[str_len]=0;
fputs(buf, stdout);
}
close(recv_sock);
return 0;
}
TTL
- 패킷의 수명. 패킷을 언제 소멸시킬지 결정하는 수치
- 라우터를 거칠때마다 1씩 감소되어 0이되면 해당 패킷은 소멸됨
- TTL을 설정하는 법은 setsockopt 함수를 이용
int send_sock;
int time_to_live = 64;
send_sock=socket(PF_INET, SOCK_DGRAM< 0); // UDP 소켓
setsockpet(send_sock, IPPROTO_IP, IP_MULTICAST_TTL, (void*)&time_to_live, sizeof(time_to_live);
728x90
'Programming > Network' 카테고리의 다른 글
열혈 TCP/IP 15-1. 표준 입출력 함수의 장점 (0) | 2021.03.28 |
---|---|
열혈 TCP/IP 14-2. 브로드캐스트(Broadcast) (0) | 2021.03.14 |
열혈 TCP/IP 13-3. 윈도우에서의 MSG_OOB 처리 (0) | 2021.03.14 |
열혈 TCP/IP 13-2. readv & writev 입출력 함수 (0) | 2021.03.14 |
열혈 TCP/IP 13-1. send & recv 입출력 함수 (0) | 2021.03.14 |