C# 在同一端口上接收对UDP多播的响应

C# 在同一端口上接收对UDP多播的响应,c#,sockets,udp,multicast,C#,Sockets,Udp,Multicast,我正在尝试发送一个多播数据包,然后接收返回的响应(应该只有一个响应)。我可以发送数据包,wireshark显示了响应,但我的程序从未接收到它。我尝试了一些不同的方法,但这是我的无效代码的当前状态 IPEndPoint epReceive = new IPEndPoint(IPAddress.Any, 5355); IPEndPoint epSend = new IPEndPoint(IPAddress.Parse("224.0.0.252"), 5355); UdpClient sendCli

我正在尝试发送一个多播数据包,然后接收返回的响应(应该只有一个响应)。我可以发送数据包,wireshark显示了响应,但我的程序从未接收到它。我尝试了一些不同的方法,但这是我的无效代码的当前状态

IPEndPoint epReceive = new IPEndPoint(IPAddress.Any, 5355);
IPEndPoint epSend = new IPEndPoint(IPAddress.Parse("224.0.0.252"), 5355);

UdpClient sendClient = new UdpClient();
sendClient.ExclusiveAddressUse = false; 
sendClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
sendClient.Client.Bind(epReceive);
sendClient.Send(packet, packetLength, epSend);

byte[] buffer = sendClient.Receive(ref epReceive);


sendClient.Close();

这段代码挂起在sendClient.Receive()行上。我意识到这段代码目前处于阻塞状态,可能/应该是线程化的,但就使用它的目的而言,这并不是一个问题。

接收多播消息并不是那么简单。查看设置sendClient.ExclusiveeAdDressUse=false的原因?目标端点必须是IPAddress。广播:IPEndPoint epSend=new IPEndPoint(IPAddress.Broadcast,5355);据我所知,响应不是多播。它应该是对发送IP的直接回复。另外,sendClient.exclusiveAddressUse=false是我尝试使用两个udp客户机执行相同操作时遗留下来的代码。我把它拿走了,但没什么区别。此外,我相信发送IP是正确的,因为它是多播的,而不是广播消息。如前所述,数据包发出并被另一端接收。很好,我根本无法读取应用程序中的响应。