2012-11-26 23 views
6

Jak uzyskać adres IP nadawcy pakietu UDP multiemisji? Bieżący kod jest ustawiony w sposób synchroniczny/blokujący (patrz uwaga poniżej). Oto kod:Uzyskaj adres IP nadawcy z pakietu multiemisji

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{} 
     } 
    } 

Uwaga: To pytanie pochodzi z chat, jako taki nie jest mój kod. Pytam tylko dlatego, że rozumiem problem.

+0

Proszę nie zawsze używać pustej '' {} catch. Po prostu maskuje błędy i sprawia, że ​​problemy są trudniejsze do rozpoznania. Jeśli próbujesz zignorować konkretny wyjątek, zrób to dla tego konkretnego typu (np. "Catch FileNotFoundExcetion {}") –

+2

@ JonathonReinhart czy przeczytałeś komentarz o mnie, mówiąc, że to nie mój kod * westchnienie * –

+4

Przepraszam za brakujące . Jednak nie nazwałbym tego "płonącym", nazwałbym to "konstruktywną sugestią". –

Odpowiedz

Powiązane problemy