private void AcceptCallback(IAsyncResult ar)
        {
            ClientConnection connection = new ClientConnection();
            connection.Socket = listener.EndAccept(ar);
            Receive(connection);

            blocker.Set(); // signal the loop to start listening for another connection.
        }
 private void Receive(ClientConnection connection)
 {
     try
     {
         connection.Socket.BeginReceive(connection.Buffer, 0, ClientConnection.BufferSize, 0,
             new AsyncCallback(ReceiveCallback), connection);
     }
     catch (Exception ex)
     {
         Console.WriteLine("An error occured when attempting to receive from {0} : {1}", connection.UserName, ex.Message);
     }
 }