无法在UdpClient上关闭MulticastLoopback

时间:2012-01-10 11:47:50

标签: c# udp broadcast udpclient loopback

我正在从UdpClient发送定向广播数据包。

我也正在侦听第二个UdpClient上的目标端口(在同一个应用程序中)。

我不想看到自己创建的数据包,所以我认为只是将MulticastLoopback设置为false,但这不起作用。我仍然看到自己的数据包。

 private readonly IPAddress BroadcastAddress = IPAddress.Parse("169.254.255.255");
 private const int Port = 0x88a4;

 private UdpClient _udpSend, _udpReceive;

 private void InitUdp()
 {
     _udpSend = new UdpClient();
     _udpSend.EnableBroadcast = true;
     _udpSend.MulticastLoopback = false;
     _udpSend.Connect(BroadcastAddress, Port);

     _udpReceive = new UdpClient(new IPEndPoint(IPAddress.Any, Port));
     _udpReceive.MulticastLoopback = false;
     _udpReceive.BeginReceive(OnUdpPacket, null);           
 }

任何想法?

我是否可以使用UdpClient实现此功能,还是必须回退到原始套接字?

修改

我尝试使用单个UdpClient实例进行发送和接收,但现在我从未收到任何数据,无论MulticastLoopback设置如何!

我已经尝试过监听IPAddress.Any和我的本地IP,但我从未看到任何数据包。

 private readonly IPAddress BroadcastAddress = IPAddress.Parse("169.254.255.255");
 private const int Port = 0x88a4;

 private UdpClient _udpClient;

 private void InitUdp()
 {
     _udpClient= new UdpClient(new IPEndPoint(IPAddress.Any, Port));
     _udpClient.Connect(BroadcastAddress, Port);
     _udpClient.BeginReceive(OnUdpPacket, null);           
 }

0 个答案:

没有答案