나는 우분투 16.04에서 일하고있다. 멀티 캐스트 그룹에 가입/탈퇴하는 UDP 소켓을 만드는 C++ 코드입니다.Ubuntu C++ 멀티 캐스트 이중 떠남 그룹 메시지
그룹 가입/퇴장 코드가 작동하지만 그걸 가지고 놀고 있었는데 wireshark에서 뭔가를 알아 차렸고 그에 대한 정보를 찾을 수 없습니다.
나가기 전에 코드가 종료됩니다. Wireshark는 2 개의 그룹 메시지를 남깁니다. 코드가 종료되면 커널이 소켓을 닫고 그룹 그룹 메시지를 보냅니다. 하지만 왜 2? 항상 2입니다.
편집 : 또한 내가 wireshark를 떠날 때 전화를 걸 때 그룹 메시지를 남깁니다. 함수가 한 번만 실행됩니다 (인쇄 때문에). 2 메시지가 정상적으로 작동합니까?
또한 조인 기능에 대한 프린트를 추가했는데 한 번만 호출되었지만 wireshark가 2 조인 메시지를 가져 오는 경우가 있습니까? 이것은 때때로 발생합니다. 나는 이것에 대해 전혀 모른다.
하지만 코드가 작동하기 때문에 커널이 이러한 작업을 처리하는 방법과 관련이 있다고 생각합니까?
ip_mreq multicastRequest;
std::cout << "leaveGroup called" << std::endl;
multicastRequest.imr_multiaddr.s_addr = inet_addr(multicastGroup.c_str());
multicastRequest.imr_interface.s_addr = inet_addr(interfaceAddress(interface).c_str());
setsockopt(sockDesc_, IPPROTO_IP, IP_DROP_MEMBERSHIP,&multicastRequest, sizeof(multicastRequest))