Beispiel #1
0
        private void AcceptProcess(SocketAsyncEventArgs e)
        {
            if (OnBeforeAccept(e.AcceptSocket))
            {
                Interlocked.Increment(ref _nextSessionId);
                var c = new Client(_nextSessionId, this, e.AcceptSocket);

                c.Start();

                AddClient(c);
                Logger.Log(Logger.LogLevel.Info, "Clients online: {0}", Clients.Count);
            }
            else
            {
                if (e.AcceptSocket.Connected)
                    e.AcceptSocket.Shutdown(SocketShutdown.Both);
                e.AcceptSocket.Close();
            }
            _acceptEventArgs.AcceptSocket = null;
            Interlocked.Exchange(ref _asyncAccepts, 0);
            NetworkSignal.Set();
        }