2012-11-26 25 views
6

Çok Noktaya Yayın UDP paketinin göndericisinin IP'sini nasıl alırsınız? Geçerli kod senkronize/engelleme şeklinde ayarlanır (aşağıdaki nota bakınız). Böyle benim kod olmadığı için bu soru sohbet geliyor:Çok noktaya yayın paketinden gönderen ip alın

private void receive() 
    { 
     string mcastGroup = SetMcastGroup(); 
     s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); 
     s.EnableBroadcast = true; 
     IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 5000); 
     s.Bind(ipep); 
     IPAddress ip = IPAddress.Parse(mcastGroup); 
     s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(ip, IPAddress.Any)); 

     while (true) 
     { 
      try 
      { 
       byte[] b = new byte[4096]; 
       s.Receive(b); 
       string str = Encoding.ASCII.GetString(b, 0, b.Length); 
       //this.SetText(ipep.Address + ": " + str.Trim()); 
       this.SetText(senderIP() + ": " + str.Trim()); 
      } 
      catch{} 
     } 
    } 

Not: Burada kodudur. Sadece soruyorum çünkü sorunu anlıyorum.

+0

yerine bu çağrıyı receiveFrom yapmak için hiç boş 'catch {}' lütfen kullanmayın. Hataları basitçe maskeler ve sorunları tanımayı zorlaştırır. Belirli bir özel durumu görmezden gelmeye çalışıyorsanız, bu özel tür için bunu yapın (örn. "FileNotFoundExcetion {}" yakalayın) –

+2

@JonathonReinhart Benim hakkımda söyleyemediğim yorumu okudum benim * * Uydur * –

+4

Eksik olduğum için özür dilerim . Ancak, ben buna "ateşli" demezdim, buna "yapıcı bir öneride bulunma" derim. –

cevap