private void AcceptCallback(IAsyncResult result)
        {
            var listener = (Socket)result.AsyncState;

            try
            {
                var             client       = listener.EndAccept(result);
                var             clientStream = new NetworkStream(client);
                ConnectedClient c;
                lock (_clients)
                {
                    c = new ConnectedClient(clientStream, new byte[5000], new MemoryStream());
                    _clients.Add(c);
                }
                clientStream.BeginRead(c.Buffer, 0, c.Buffer.Length, ReadCompleted, c);
                if (_feedbackProvider != null)
                {
                    _feedbackProvider.ClientConnected(_currentIp, _currentPort, ClientCount);
                }
            }
            catch (Exception ex)
            {
                WriteError(ex);
            }
            finally
            {
                listener.BeginAccept(new AsyncCallback(AcceptCallback), listener);
            }
        }