I am writing a simple code to send and receive data on a 
udp socket.
 the code works ok except for the data is getting received thrice .
 I am new to this so bare with me... :)
 
Sendrer Code:
 Socket 
server = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, 
ProtocolType.Udp);
           
server.EnableBroadcast = false;
            
server.ExclusiveAddressUse = false;   
       
IPEndPoint iep = new
IPEndPoint(IPAddress.Parse("224.100.0.1"), 
9050);
           
byte[] data = 
Encoding.ASCII.GetBytes(textBox1.Text.Trim());
            server.SendTo(data, 
iep);
            server.Close(); 
        }
       
private void 
OnReceive(IAsyncResult ar)
        {
            
try
            {
               
UdpClient u = (UdpClient)((UdpState)(ar.AsyncState)).u;
               
IPEndPoint e = (IPEndPoint)((UdpState)(ar.AsyncState)).e;
               
UdpState s = new
UdpState();
                s.e = e;
                s.u = u;
               
Byte[] receiveBytes = u.EndReceive(ar,
ref e);
               
string receiveString =
Encoding.ASCII.GetString(receiveBytes);
                s.e = e;
                
listBox1.Items.Add("Received:" + 
receiveString + e.Address.ToString());
                
u.BeginReceive(new 
AsyncCallback(OnReceive), s);
            }
            catch 
(Exception ex)
            {
               
MessageBox.Show(ex.Message);
            }
        }
       
private void 
Form1_Load(object sender,
EventArgs e)
        {
            
CheckForIllegalCrossThreadCalls = false;//Will 
remove later
        }
       
private void 
StartReceive_Click(object sender,
EventArgs eA)
        {
           
IPEndPoint iep = new
IPEndPoint(IPAddress.Parse("224.100.0.1"), 
9050);
           
IPEndPoint e = new
IPEndPoint(IPAddress.Any, 
9050);
           
UdpClient u = new
UdpClient(e);          
            u.Client.Blocking 
= false;
           
UdpState s = new
UdpState();
            s.e = e;
            s.u = u;
            
s.u.Client.DontFragment = true;
            s.u.Client.Ttl = 
1;
            
listBox1.Items.Add("listening for messages");
            
u.JoinMulticastGroup(IPAddress.Parse("224.100.0.1"));
           u.BeginReceive(new
AsyncCallback(OnReceive), s);
        }
       
public class
UdpState
        {
           
public IPEndPoint 
e;
          
public UdpClient 
u;
        } 
![sfdsf.jpg]()