2012-11-26 78 views
6

如何获取组播UDP数据包发件人的IP?当前代码以同步/阻塞方式设置(请参阅下面的注释)。下面是代码:从组播数据包获取发件人IP

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

注:这个问题来自聊天,这样是不是我的代码。我只是问,因为我理解这个问题。

+0

请永远不要使用空'抓{}'。它只是掩盖错误并使问题更难以识别。如果你想忽略一个特定的异常,那么你可以为这个特定的类型(例如'catch FileNotFoundExcetion {}') –

+2

@JonathonReinhart你读了关于我的评论说它不是我的代码*叹息* –

+4

我很抱歉失去了。但是,我不会称之为“燃烧”,我会称之为“提出建设性的建议”。 –

回答