private void btnSend_Click(object sender, EventArgs e)
        {
            if (txbContent.Text == "")
            {
                return;
            }
            ChatContent temp = new ChatContent();

            temp.Content = txbContent.Text;
            ServerSite.TheServer.Instance.SendChatContent(temp);
            AddContentToRtbx(temp);
            txbContent.Clear();
        }
        private void AddContentToRtbx(ChatContent data)
        {
            string s = "";

            if (data.Sender == "")
            {
                s += "Server to all: " + data.Content;
            }
            else
            {
                s += data.Sender + " to Server: " + data.Content;
            }
            rtxbAllContent.Text += s + System.Environment.NewLine;
        }
Exemple #3
0
        /// <summary>
        /// Wartet fortlaufend auf Packete vom Client
        /// </summary>
        public void Receiver()
        {
            try
            {
                while (client.Client.Connected)
                {
                    GeneralPackage receivedPackage = (GeneralPackage)bFormatter.Deserialize(netStream);

                    GeneralPackage sendPackage = new GeneralPackage();

                    switch (receivedPackage.Header)
                    {
                    case ComHeader.hSend:
                        MessageSend message = new MessageSend();
                        message = (MessageSend)receivedPackage.Content;
                        int indexReceiver = UserController.GetIndexOfUser(message.To);
                        //Ist der Empfänger Online ?
                        if (UserController.ConnectedUsers[indexReceiver].Status == true)
                        {
                            NetworkStream netStreamOfReceiver = ((SClient)UserController.ConnectedUsers[indexReceiver].Connection).netStream;

                            // An den Empfänger senden
                            sendPackage.Header = ComHeader.hReceived;

                            //Sende Nachricht zum Empfänger
                            MessageReceived messageReceived = new MessageReceived();
                            messageReceived.From    = individualUser.Email;
                            messageReceived.Message = message.Msg;
                            sendPackage.Content     = messageReceived;

                            bFormatter.Serialize(netStreamOfReceiver, sendPackage);

                            //Speichere Nachricht in der Datenbank
                            dbController.SaveMessage(individualUser.Email, message.To, message.Msg, false);
                        }
                        else
                        {
                            //Speichere die Nachricht in der Datenbank
                            dbController.SaveMessage(individualUser.Email, message.To, message.Msg, false);
                        }
                        break;

                    case ComHeader.hDisconnect:
                        if (individualUser != null)     //individualUser ist null, wenn der Benutzer sich nur registrieren möchte
                        {
                            Console.WriteLine("[{0}] Client ({1}) hat sich abgemeldet", DateTime.Now, individualUser.Email);
                            CloseConn();
                        }
                        else
                        {
                            Console.WriteLine("[{0}] Client hat sich abgemeldet", DateTime.Now);
                            CloseConn();
                        }
                        break;

                    case ComHeader.hChat:     // Wenn nach dem Inhalt eines "Chats" gefragt wird

                        sendPackage.Header = ComHeader.hChat;

                        ChatPerson chatPerson = ((ChatPerson)receivedPackage.Content);


                        //Die ungelesenen Nachrichten als gelesen markieren
                        dbController.MarkNotReceivedMessagesAsReceived(individualUser.Email, chatPerson.Email);


                        ChatContent chatContent = new ChatContent();
                        chatContent.chatContent = dbController.LoadChat(individualUser.Email, chatPerson.Email);

                        sendPackage.Content = chatContent;

                        SendPackage(sendPackage);
                        break;

                    case ComHeader.hAddContact:
                        #region Kontakt hinzufügen
                        ChatPerson friend = ((ChatPerson)receivedPackage.Content);

                        // Wenn der Kontakt hinzugefügt wurden konnte
                        if (dbController.AddContact(individualUser.Email, friend.Email))
                        {
                            sendPackage.Header  = ComHeader.hAddContact;
                            sendPackage.Content = dbController.LoadContacts(individualUser.Email);

                            SendPackage(sendPackage);
                        }
                        else
                        {
                            // Wenn der Kontakt nicht hinzugeüft werden kann
                            sendPackage.Header = ComHeader.hAddContactWrong;
                            SendPackage(sendPackage);
                        }

                        #endregion
                        break;

                    case ComHeader.hState:
                        sendPackage.Header  = ComHeader.hState;
                        sendPackage.Content = dbController.LoadContacts(individualUser.Email);
                        SendPackage(sendPackage);
                        break;

                    case ComHeader.hMessagesRead:
                        ChatPerson chat_friend = ((ChatPerson)receivedPackage.Content);
                        //Die Nachrichten als gelesen markieren
                        dbController.MarkNotReceivedMessagesAsReceived(individualUser.Email, chat_friend.Email);
                        break;
                    }
                }
            }

            catch (IOException e)
            {
                //Falls während eines Vorgangs ein Fehler auftreten sollte, wird von einer Verbindungsunterbrechung ausgegangen.
                Console.WriteLine("[{0}] Client ({1}) hat sich abgemeldet", DateTime.Now, individualUser.Email);
                Console.WriteLine("{0}", e.ToString()); //TODO:

                /*
                 * Wenn ein "Client" sicht  abmeldet, erscheint eine Fehlermeldung("[...] connection was forcibly closed").
                 * Besser wäre eine Abmeldung mit einer Benachrichtigung an den Server
                 */
            }
        }