2010-03-27 7 views
0

J'essaie de recevoir des messages de diffusion en utilisant le code C# dans un réseau RNIS avec l'interface BRI à mon extrémité.Réception de messages de diffusion

Je vois les paquets envoyés à l'adresse IP de diffusion (239.255.255.255) sur certains ports en utilisant l'outil Comm View. Mais quand j'essaye d'écouter cette adresse IP, elle dit que l'adresse n'est pas dans un contexte valide.

Mais quand j'envoie des messages diffusés à 255.255.255.255 sur un port, je peux recevoir ces messages avec le code ci-dessous ..

Quel pourrait être le problème avec cette adresse IP - 239.255.255.255?

The code I use to listen to broadcast messages is.. 

UdpClient udp = new UdpClient(); 
IPEndPoint receiveEndPoint = new IPEndPoint(IPAddress.Any, 8013); 
// If I use IPAddress.Parse("239.255.255.255") to listen to, 
// it says "the address is not in a valid // context." 
udp.Client.Bind(receiveEndPoint); 
udp.BeginReceive(_Callback, udp); 

static private void _Callback(IAsyncResult iar) 
{ 
     try 
     { 
      UdpClient client = (UdpClient)iar.AsyncState; 

      client.BeginReceive(_Callback, client); 

      IPEndPoint ipRemote = new IPEndPoint(IPAddress.Any, 8013); 

      byte[] rgb = client.EndReceive(iar, ref ipRemote); 

      Console.WriteLine("Received {0} bytes: \"{1}\"", 
      rgb.Length.ToString(), Encoding.UTF8.GetString(rgb)); 
     } 
     catch (ObjectDisposedException) 
     { 
      Console.WriteLine("closing listening socket"); 
     } 
     catch (Exception exc) 
     { 
      Console.WriteLine("Listening socket error: \"" + 
      exc.Message + "\""); 
     } 
} 

Il y a des paquets envoyés à l'ipaddress de diffusion (239.255.255.255) que je peux voir dans l'outil Commview, mais ne peut pas les recevoir à partir du code ...

Quelqu'un peut-il me aider s'il vous plaît ? En vous remerciant d'avance,
Prasad Kancharla.

Répondre

0

Je n'ai pas beaucoup fait avec la multidiffusion, mais je crois que la préparation de la réception de paquets multicast est un processus en deux étapes. D'abord, vous liez à une adresse IP locale, ce que vous avez fait avec IPAddress.Any. Ensuite, vous devez spécifier le groupe de multidiffusion que vous souhaitez joindre à l'aide d'un objet MulticastOption avec la méthode Socket.SetSocketOption.

La bibliothèque MSDN possède un example pour votre référence.

+0

Salut .. Merci pour vos réponses .. Je l'ai résolu le lien suivant http://stackoverflow.com/questions/2271183/udp-packet-capturing-in-c Merci, Prasad – Prasad

0

Il semble que vous supposiez que l'adresse est une diffusion dirigée (diffusion locale-sous-réseau) alors qu'elle se trouve réellement dans la plage d'adresses IP réservée à la multidiffusion, ce qui est entièrement autre chose.

Questions connexes