Beispiel #1
0
        /// <summary>
        /// Fügt einen Host zur Liste hinzu, wenn er noch nicht
        /// vorhanden ist
        /// </summary>
        /// <param name="endPoint">IPEndPoint des Hosts</param>
        /// <param name="message">Nachricht (enthält Portnummer)</param>
        private void AddClient(EndPoint endPoint, string message)
        {
            ChatMessage msg   = new ChatMessage(message, "");
            bool        found = false;

            // Host in der Liste suchen
            foreach (ChatConnection connection in clientList)
            {
                if (connection.Address.Equals(((IPEndPoint)endPoint).Address) && connection.PortNumber == int.Parse(msg.PortNumber))
                {
                    found = true;
                    break;
                }
            }

            // Wenn nicht gefunden, hinzufügen
            if (!found)
            {
                ChatConnection conn = new ChatConnection
                {
                    Address    = ((IPEndPoint)endPoint).Address,
                    PortNumber = int.Parse(msg.PortNumber)
                };

                clientList.Add(conn);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Konstruktor
        /// </summary>
        /// <param name="connection">Verbindungseinstellungen für das Ziel der Übertragung</param>
        public ChatClient(ChatConnection connection)
        {
            // Verbindungsdaten speichern
            this.connection = connection;

            // TcpClient-Objekt erzeugen
            tcpClient = new TcpClient();
        }
Beispiel #3
0
        /// <summary>
        /// Eventhandler für Klick auf den "OK"-Button
        /// </summary>
        private void OkButton_Click(object sender, RoutedEventArgs e)
        {
            // Server-Daten parsen und ggf. Default setzen
            ChatConnection tempServerConnection = Parse(ServerHostTextBox, ServerPortTextBox);

            // Server-Daten parsen und ggf. Default setzen
            ChatConnection tempClientConnection = Parse(ClientHostTextBox, ClientPortTextBox);

            // Eingaben übernehmen
            if (tempServerConnection == null || tempClientConnection == null)
            {
                // Fehler beim Parsen
                MessageBox.Show(this, "Beim Einlesen mindestens einer der Angaben ist ein Fehler aufgetreten." + Environment.NewLine +
                                "Bitte die Schreibweise der IP-Adressen und Portnummern überprüfen.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            else
            {
                // Server-Daten speichern
                connectionSettings.ServerConnection.Address    = tempServerConnection.Address;
                connectionSettings.ServerConnection.PortNumber = tempServerConnection.PortNumber;

                // Client-Daten speichern
                connectionSettings.ClientConnection.Address    = tempClientConnection.Address;
                connectionSettings.ClientConnection.PortNumber = tempClientConnection.PortNumber;

                // Name speichern (muss zwischen 3 und 8 Zeichen lang sein)
                if (NameTextBox.Text.Length > 8)
                {
                    connectionSettings.UserName = NameTextBox.Text.Substring(0, 8);
                }
                else if (NameTextBox.Text.Length < 3)
                {
                    connectionSettings.UserName = GetRandomName();
                }
                else
                {
                    connectionSettings.UserName = NameTextBox.Text;
                }

                // Schlüssel speichern
                connectionSettings.Key = KeyTextBox.Text;

                // Einstellungen speichern
                connectionSettings.Save();

                // Dialog-Result setzen und schließen
                DialogResult = true;
                Close();
            }
        }
Beispiel #4
0
        /// <summary>
        /// Von außen zugängliche Methode zum Start
        /// des Empfangsvorgangs
        /// </summary>
        /// <param name="connection">Verbindungsdaten (z.Zt. wird nur die Portnummer verwendet)</param>
        public void BeginListen(ChatConnection connection)
        {
            this.connection = connection;

            // BackgroundWorker starten
            try
            {
                serverBackgroundWorker.RunWorkerAsync(new ServerBackgroundWorkerArgs
                {
                    PortNumber = connection.PortNumber
                });
            }
            catch (Exception)
            {
                throw;
            }
        }
Beispiel #5
0
        /// <summary>
        /// Entfernt einen Host aus der Liste
        /// </summary>
        /// <param name="endPoint">IPEndPoint des Hosts</param>
        private void RemoveClient(EndPoint endPoint)
        {
            ChatConnection index = null;

            // Host in der Liste suchen und speichern
            foreach (ChatConnection connection in clientList)
            {
                if (connection.Address == ((IPEndPoint)endPoint).Address)
                {
                    index = connection;
                    break;
                }
            }

            // Falls gefunden, entfernen
            if (index != null)
            {
                clientList.Remove(index);
            }
        }
Beispiel #6
0
        /// <summary>
        /// Liest die Einstellungen aus einer Datei
        /// </summary>
        /// <param name="filename">Dateiname</param>
        public void Load(string filename = "settings.txt")
        {
            // Überprüfen, ob Datei vorhanden ist
            if (File.Exists(filename))
            {
                List <string> lines = File.ReadAllLines(filename, Encoding.UTF8).ToList();

                // Nur bei wohldefinierter Datei Versuch unternehmen, zu lesen
                if (lines.Count == 4)
                {
                    ServerConnection = new ChatConnection(lines[0]);
                    ClientConnection = new ChatConnection(lines[1]);

                    if (lines[2].Length > 2 && lines[2].Length < 9)
                    {
                        UserName = lines[2];
                    }

                    Key = lines[3];
                }
            }
        }