/// <summary> /// Verbindet mit dem Server und meldet sich mit den Nutzerdaten an. /// </summary> /// <param name="Username"></param> /// <param name="Password"></param> /// <returns>Gibt an ob die Verbindung und der Login erfolgreich waren.</returns> public bool Connect(string Username, string Password) { try { tcpClient = new TcpClient(settings.IpAddress, settings.Port); streamRW = new StreamRW(tcpClient.GetStream()); Message message = new Message() { content = new Content(ContentType.Login, Username, Password), sender = Username, sendTime = DateTime.Now }; Send(message); username = Username; if (streamRW.ReadLine() == "Login successfull") { return(true); } else { streamRW.Close(); tcpClient.Close(); return(false); } } catch (Exception e) { Log.WriteLine("[Server][{0}] {1}", DateTime.Now, e.InnerException); MessageBox.Show("Server nicht erreichtbar"); return(false); } }
/// <summary> /// Versucht, sich beim Server zu registrieren. /// </summary> /// <param name="username"></param> /// <param name="password"></param> public bool Register(string username, string password) { if (tcpClient == null || !IsConnected) { settings = SettingsDatabase.Load(); tcpClient = new TcpClient(settings.IpAddress, settings.Port); streamRW = new StreamRW(tcpClient.GetStream()); Message message = new Message() { content = new Content(ContentType.Register, username, password), sender = null, sendTime = DateTime.Now }; Send(message); string buffer = streamRW.ReadLine(); if (buffer == "Register succesfull") { Log.WriteLine("[Client][{0}] {1} registered.", DateTime.Now, username); } else if (buffer != "") { MessageBox.Show(buffer); return(false); } Disconnect("Registration finished"); return(true); } return(false); }
/// <summary> /// Verarbeitet Nachrichten, die an den Server von der Verbindung gesendet werden. /// </summary> /// <param name="Message">Aufbau: Befehle:Parameter</param> /// <returns></returns> void ProcessMessage(string Content) { Message receivedMessage = Serializer.Deserialize <Message>(Content); Command command = (Command)receivedMessage.content; switch (command.type) { case CommandType.Login: StreamRW streamRW = new StreamRW(tcpClient.GetStream()); if (command.parameter[0] == command.parameter[1]) { streamRW.WriteLine("Login successfull"); username = command.parameter[0]; Log.WriteLine("[Server][{0}]{1} logged in", DateTime.Now, username); } else { streamRW.WriteLine("Login failed"); Log.WriteLine("[Server][{0}{1}] failed to log in", DateTime.Now, username); } break; case CommandType.Message: Log.WriteLine("[Server][{0}]{1}: {2}", receivedMessage.sendTime, receivedMessage.sender, command.parameter[0]); break; case CommandType.Disconnect: Log.WriteLine("[Server][{0}]{1}: Disconnected: {2}", receivedMessage.sendTime, receivedMessage.sender, command.parameter[0]); break; } }
/// <summary> /// Verbindet mit dem Server und meldet sich mit den Nutzerdaten an. /// </summary> /// <param name="Username"></param> /// <param name="Password"></param> /// <returns>Gibt an ob die Verbindung und der Login erfolgreich waren.</returns> public bool Connect(string Username, string Password) { tcpClient = new TcpClient("87.172.204.102", 1337); streamRW = new StreamRW(tcpClient.GetStream()); Message message = new Message() { content = new Command(CommandType.Login, Username, Password), sender = Username, sendTime = DateTime.Now }; Send(message); username = Username; return((streamRW.ReadLine() == "Login successfull") ? true : false); }
public Connection(TcpClient TcpClient) { tcpClient = TcpClient; streamRW = new StreamRW(tcpClient.GetStream()); }
/// <summary> /// Verarbeitet Nachrichten, die an den Server von der Verbindung gesendet werden. /// </summary> /// <param name="Message">Aufbau: Befehle:Parameter</param> /// <returns></returns> void ProcessMessage(string Content) { // Deserialisiert die Message. Message receivedMessage = Serializer.Deserialize <Message>(Content); Content content = receivedMessage.content; // Verarbeitet die Nachricht. switch (content.type) { // Registriert einen Benutzer in der UserDatabase und meldet das Ergebnis. case ContentType.Register: if (Server.userDatabase.Register(content.parameter[0], content.parameter[1])) { this.streamRW.WriteLine("Register succesfull"); Log.WriteLine("[Server][{0}] {1} registered.", DateTime.Now, content.parameter[0]); } else { Log.WriteLine("[Server][{0}] {1} failed to register.", DateTime.Now, content.parameter[0]); } break; // Überprüft die Anmeldedaten und gibt das Ergebnis zurück. case ContentType.Login: StreamRW streamRW = new StreamRW(tcpClient.GetStream()); if (Server.userDatabase.Login(content.parameter[0], content.parameter[1])) { streamRW.WriteLine("Login successfull"); username = content.parameter[0]; Log.WriteLine("[Server][{0}] {1} logged in", DateTime.Now, username); } else { streamRW.WriteLine("Login failed"); Log.WriteLine("[Server][{0}] {1} failed to log in", DateTime.Now, username); } break; case ContentType.Disconnect: Server.connectedUser.Remove(this); tcpClient.Close(); Log.WriteLine("[Server][{0}] {1}: Disconnected: {2}", receivedMessage.sendTime, receivedMessage.sender, content.parameter[0]); break; case ContentType.RequestChat: this.streamRW.WriteLine(Serializer.Serialize <List <Message> >(Server.chatHistory, false).Replace(Environment.NewLine, "")); break; case ContentType.Message: Server.chatHistory.Add(receivedMessage); foreach (Connection connection in Server.connectedUser) { connection.streamRW.WriteLine(new Message() { content = receivedMessage.content, sender = receivedMessage.sender, sendTime = receivedMessage.sendTime }.ToString()); } Log.WriteLine("[Server][{0}] {1}: {2}", receivedMessage.sendTime, receivedMessage.sender, content.parameter[0]); break; } }