본문 바로가기

게임엔진/크로스플랫폼 : HazelEngine

231004 자체 엔진 개발 : Child Process Multicast 구현 하기

 

https://www.youtube.com/watch?v=hG45hISou58

 

TCP / IP mutlcast 를 구현해보고자 했다.

하나의 컴퓨터로 multicast 를 구현하는 상황이다.

 

기본적으로 Server 역할, 혹은 Sender 역할을 하는 Process 를 하나 만들고

Child Process 로 , 여러 Receiver 들을 만들어보려고 했다.

 

1st 시도 : receiver 들에게 각각 같은 Port 할당해주기 

 

Multicast 는 기본적으로 UDP 통신이다.

이때 Receiver 쪽에 bind 함수를 실행해줘서

어떤 Multicast Port 와 Multi Cast Address 에서 오는 데이터를 수신하는지를 세팅해줘야 한다.

 

그런데 그 결과, 하나의 Receiver 가 만들어졌다.

추가 Receiver 를 만드려고 하면, 에러가 나왔다.

 

2nd 시도 : receiver 들에게 각각 다른 Port 할당해주기

 

같은 Port 번호를 할당해주려고 하는 것이라면, Receiver 쪽에 다른 Port 를 할당해주면 된다.

그런데 이러고 나니, Receiver 는 만들어지지만 의도한 대로 Server 에서 보낸 내용이

모든 Receiver 에게 전파되지 않았다.

 

이유

멀티캐스트 통신은 기본적으로 특정 multicast 주소와 port 로 데이터를 보내는 것에 의존한다.

즉,  receiver들은 같은 주소와 port 를 이용하여 같은 멀티캐스트 그룹에 가입해야만 정상동작한다.