UdpClient からダイレクト ブロードキャスト パケットを送信しています。
また、2 番目の 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 でこれを達成できますか、それとも生のソケットに戻す必要がありますか?
編集:
送信と受信の両方に 1 つの 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);
}