private void Process(object s, SocketAsyncEventArgs e)
{
try
{
if (e.SocketError == SocketError.Success)
{
Client T = new Client(e.AcceptSocket, BufferSize);
lock (_clients)
{
if (_clients.Count <= MaxConnections)
{
_clients.Add(T);
T.ClientState += HandleState;
T.ClientRead += OnClientRead;
T.ClientWrite += OnClientWrite;
OnClientState(T, true);
}
else
{
T.Disconnect();
}
}
e.AcceptSocket = null;
if (!_handle.AcceptAsync(e))
Process(null, e);
}
else
{
Disconnect();
}
}
catch
{
Disconnect();
}
}