일부 UDP 패킷을 수신하기 위해 멀티 캐스트 그룹에 연결하려고합니다. 내가 사용하고있는 코드가 잘 작동하고 있으며, 패킷을 받고 있는데 전에 문제가 없었습니다. 그러나 이제는 패킷이 멀티 캐스트 조인 메시지를 볼 필요가있는 스위치를 통과해야하는 새로운 요구 사항이 있습니다. 전에 스위치가 바보 같았 기 때문에 문제가되지 않았습니다.IGMP Join 메시지에 잘못된 체크섬이 있습니다.
var LocalAddress = "228.12.12.27";
var LocalPort = 46715;
var LocalEndPoint = new IPEndPoint(IPAddress.Parse(LocalAddress), LocalPort);
var RxSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
RxSocket.Blocking = false;
RxSocket.ReceiveBufferSize = UInt16.MaxValue;
RxSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
RxSocket.Bind(new IPEndPoint(IPAddress.Any, LocalEndPoint.Port));
RxSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(LocalEndPoint.Address));
RxSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 50);
RxSocket.Close();
IGMP를 생성하는 라인은 메시지가
RxSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(LocalEndPoint.Address));
입니다 그리고 IGMP 참여 메시지가 발송됩니다 가입 :
가 멀티 캐스트 그룹에 가입하려면이 코드를 사용합니다.그러나 Wireshark를 사용하여 네트워크를 스누핑하면 IGMP 메시지의 체크섬이 잘못되었음을 알 수 있습니다.
내 코드 또는 입력에 문제가 있습니까? 아니면 다른 것이 있습니까?