|
Multicast에서 데이터는 UDP를 통해서 받지만 데이터 컨트롤은 IGMP라는 프로토콜을 통해서 이루어집니다.
예를 들어 224.1.1.1이라는 멀티캐스트 주소의 데이터를 받고 싶다면 224.1.1.1에대한 IGMP Join메시지를 보내야 데이터가 UDP를 통해서 들어오는 겁니다. 끊을 때는 IGMP Leave메세지를 보내구요...
또한 스위치나 라우터단에서 멀티캐스트를 계속 수신 중인가를 파악하기위해 IGMP Membership Query메세지를 보냅니다. 일정시간내에 이 메세지에 대해서 응답을 하지 않으면 멀티캐스트를 수신하지 않는다고 판단해서 데이터를 그만 보내는거죠...
멀티캐스트 수신을 했다는 것은 곧 IGMP를 이용하였다는 것이죠. 사용하고 계신 라이브러리에 관련 기능이 있지 않을까 생각되는군요...
이범상 님이 쓰신 글 :
: 답변 정말 감사합니다. ^^
:
: 그런데 말씀하신것 중에서 적절하게 응답을 준다는게 어떤방식으로 응답을 해줘야합니까???
:
: Receive 이벤트가 뜨면 받았다는 메시지 같은걸 다시 서버쪽으로 줘야 하는건가요???
:
: 답변 보고 현재 제가 Receive 이벤트에서 Sleep(1)을 주니 잘 받아지는거 같습니다.
:
: 그런데 이건 정확한 답은 아닌거 같아서...
:
: kylix 님 다시한번 응답 방법에 대해 알려주세요.
:
: 감사합니다. ^^
:
:
: kylix 님이 쓰신 글 :
: : Multicast라면 IGMP일건데...
: :
: : 그냥 받기만 하면 안될거구요... IGMP Membership Report가 왔을때 적절하게 응답을 해주셔야지 계속해서 받을 수 있을겁니다.
: :
: : VLC도 IGMP로 계속해서 통신을 하니까 끊어지지 않고 받을 수 있는겁니다. setsockopt과는 별 상관이 없습니다.
: :
: : 존기다림 님이 쓰신 글 :
: : : 안녕하세요~
: : : 여기서 많은 도움을 얻어가는 사람입니다. ^^
: : :
: : : 현재 C++ Builder 5와 ICS컴포넌트의 TWSocket을 사용하여 UDP Multicast 수신 프로그램을 만들었습니다.
: : :
: : : 그런데 Multicast Data를 받다보면 어느정도 받다가 끊어진것처럼 데이터가 더이상 들어오지 않습니다.
: : : (물론 송신은 계속 이루어지고 또 VLC Media Player라는 프로그램으로 데이터를 받으면 정상적으로 모두 받아집니다.)
: : : 받은 데이터는 매번 크기가 다르고 PC에 따라 대체로 받는 크기도 다릅니다.
: : :
: : : 이런 현상이 왜 나타나는지 아시는 고수님들 부탁드립니다.
: : :
: : : 그리고 Multicast 데이터 수신시 꼭 필요한 setsockopt들은 어떤것들이 있는지 부탁드립니다.
: : :
: : : 감사합니다.
|