2

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);           
 }
4

0 に答える 0