예제 #1
0
        private static void HandlePackage(SendTextMessage sendTextMessage, string clientAddress)
        {
            DateTime?sendTime;

            if (!SDBController.ConnectionAvailable())
            {
                SConnectionController.SendPackage(new Feedback(FeedbackCode.MessageSendFailed), clientAddress);
                return;
            }
            if (!SDBController.TryGetUser(clientAddress, out User user))
            {
                SConnectionController.SendPackage(new Feedback(FeedbackCode.InvalidSession), clientAddress);
                return;
            }
            if (!SDBController.TryGetIPAddressByEmail(sendTextMessage.EMail, out string ipAddress))
            {
                sendTime = null;
            }
            else
            {
                if (string.IsNullOrEmpty(ipAddress))
                {
                    sendTime = null;
                }
                else
                {
                    if (SConnectionController.SendPackage(new ReceiveTextMessage(sendTextMessage.EMail, sendTextMessage.Text), ipAddress))
                    {
                        sendTime = DateTime.Now;
                    }
                    else
                    {
                        sendTime = null;
                    }
                }
            }
            if (SDBController.TryAddMessage(user.Email, sendTextMessage.EMail, sendTextMessage.Text, sendTime))
            {
                SConnectionController.SendPackage(new Feedback(FeedbackCode.MessageSendSuccess), clientAddress);
            }
            else
            {
                SConnectionController.SendPackage(new Feedback(FeedbackCode.MessageSendFailed), clientAddress);
            }
        }
예제 #2
0
파일: SProgram.cs 프로젝트: GSO-SW/REEChat
        static void Main(string[] args)
        {
            WriteLine("Willkommen bei REEChat Server!");
            WriteLine("Überprüfung der Datenbankverbindung...");

            //checks whether a database connection can be created
            while (!SDBController.ConnectionAvailable())
            {
                WriteLine("Datenbankverbindung fehlgeschlagen.\nErneuter Versuch in 10 Sekunden");
                Thread.Sleep(10 * 1000);
            }
            WriteLine("Datenbankverbindung erfolgreich!");

            WriteLine("Server wird initialisiert...");
            SConnectionController.Init();

            WriteLine("Server wird gestartet...");

            //Trying to start the listener
            try
            {
                SConnectionController.Listener.Start(10);
            }
            catch (SocketException)
            {
                WriteLine("Server kann nicht gestartet werden. Der Port [" + ConnectionConfig.serverPort + "] wird bereits verwendet.");
                WriteLine("Mögliche Ursache dafür ist, dass bereits ein REEChat Server auf diesem Gerät läuft!");
                WriteLine("Beliebige Taste drücken zum Schließen...");
                Console.ReadKey();
                return;
            }

            SConnectionController.ThreadListener.Start();

            WriteLine("Server erfolgreich gestartet!\n");

            while (true)
            {
            }
        }