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); } }
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) { } }