Beispiel #1
0
        /// <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);
            }
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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;
            }
        }
Beispiel #4
0
        /// <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);
        }
Beispiel #5
0
 public Connection(TcpClient TcpClient)
 {
     tcpClient = TcpClient;
     streamRW  = new StreamRW(tcpClient.GetStream());
 }
Beispiel #6
0
        /// <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;
            }
        }