Пример #1
0
        /// <summary>
        /// Gets called when a connection is established.
        /// </summary>
        /// <param name="AR">IAsyncResult</param>
        private void AcceptCallback(IAsyncResult AR)
        {
            try
            {
                Socket socket;

                try
                {
                    socket = LocalSocket.EndAccept(AR);
                }
                catch (ObjectDisposedException)
                {
                    return;
                }

                ConnectedClients.Add(socket);

                socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, ReceiveCallback, socket);
                Handler.Debug("New client connected.", DebugType.Info);

                //SendToClient(socket, new NCILib.PreAuth(this));
                Send(new InstructionLibraryEssentials.KeyExchangeServer2Client(this, ConnectedClients[socket]));

                LocalSocket.BeginAccept(AcceptCallback, null);
            }
            catch (Exception ex)
            {
                Handler.Debug("Halting (06)", DebugType.Warning);
                if (HandlerData.ShowExceptions)
                {
                    Handler.Debug($"({ex.GetType().Name}) {ex.Message}", DebugType.Exception);
                }
                if (HandlerData.TryRestartOnCrash)
                {
                    HaltAllThreads();
                }
            }
        }