我正在从 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);
}