我正在尝试连接到多播组以接收一些 UDP 数据包。我正在使用的代码运行良好,我正在接收数据包并且我之前没有遇到过这个问题。但是刚才有一个新的要求,需要数据包通过一个需要看到组播加入消息的交换机。在它只是愚蠢的开关之前,这不是问题。
要加入多播组,我使用以下代码:
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 Join 消息的行是
RxSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(LocalEndPoint.Address));
并发出 IGMP Join 消息。
但是,当我使用 Wireshark 窥探网络时,我发现 IGMP 消息的校验和错误;
这是我的代码或输入的问题吗?或者还有别的什么?