コード例 #1
0
        public Messanger(string login)
        {
            InitializeComponent();
            contacts = new List <Contact>();
            DBconnection dBconnection = new DBconnection();

            dBconnection.ConnectDB();
            //Заполнение данных MyContact
            string query  = $"SELECT DISTINCT * FROM Account WHERE login = '******'";
            var    result = dBconnection.SelectQuery(query);

            if (result.Read())
            {
                string name   = result.GetString(1);
                string status = result.GetString(4);
                MyContact.userName_textBlock.Text  = name;
                MyContact.userTitle_textBlock.Text = status;
            }
            dBconnection.ForceClose();
            //Заполнение ContactList
            List <string> contactsString = new List <string>();

            query = $"SELECT * FROM Messages WHERE sender = '{login}' OR recepient = '{login}'";
            dBconnection.ConnectDB();
            result = dBconnection.SelectQuery(query);
            while (result.Read())
            {
                if (result.GetString(1) == login)
                {
                    if (!contactsString.Contains(result.GetString(2)))
                    {
                        contactsString.Add(result.GetString(2));
                    }
                }
                else if (result.GetString(2) == login)
                {
                    if (!contactsString.Contains(result.GetString(1)))
                    {
                        contactsString.Add(result.GetString(1));
                    }
                }
            }
            dBconnection.ForceClose();
            //Добавление контактам сообщения
            List <Message> tempMessages = new List <Message>();

            foreach (var contactString in contactsString)
            {
                dBconnection.ConnectDB();
                query  = $"SELECT * FROM Messages WHERE (sender = '{contactString}' AND recepient = '{login}') OR (sender = '{login}' AND recepient = '{contactString}');";
                result = dBconnection.SelectQuery(query);
                while (result.Read())
                {
                    if (result.GetString(1) == contactString)
                    {
                        tempMessages.Add(new Message(result.GetString(3), result.GetString(5).Substring(0, 5), false));
                    }
                    else if (result.GetString(2) == contactString)
                    {
                        tempMessages.Add(new Message(result.GetString(3), result.GetString(5).Substring(0, 5), true));
                    }
                }
                contacts.Add(new Contact(new List <Message>(tempMessages), contactString, "")); //создание контакта с сообщениями
                tempMessages.Clear();
                dBconnection.ForceClose();
            }
            ContactList_listBox.ItemsSource = contacts; //обновление списка контактов на форме
            //Подключение к серверу и передача ему login
            client = new TcpClient();
            client.Connect(host, port);  //подключение клиента
            stream = client.GetStream(); // получаем поток
            Net.SendMessage(login, stream);
            ReceiveMessages(stream, client);
            Label_ServerConnect.Foreground = Brushes.Green;
            Label_ServerConnect.Content    = "Сервер подключен";
        }
コード例 #2
0
 public void Process()
 {
     try
     {
         string originalMessage = "";
         Stream = client.GetStream();
         // получаем имя пользователя
         string message = GetMessage();
         UserName = message;
         Console.WriteLine(UserName + " вошел в чат");
         // в бесконечном цикле получаем сообщения от клиента
         DBconnection dBconnection = new DBconnection();
         while (true)
         {
             int    found       = 0;
             string textMessage = "";
             string sender      = "";
             string recepient   = "";
             string date        = "";
             string time        = "";
             try
             {
                 message         = GetMessage();
                 originalMessage = message;
                 Console.WriteLine($"{UserName}: {message}");
                 if (message.Contains("NewMessage"))
                 {
                     message = message.Substring(10);
                     Console.WriteLine($"{UserName}: {message}");
                     found  = message.IndexOf("&");
                     sender = message.Substring(0, found);
                     Console.WriteLine($"sender: {sender}");
                     message = message.Substring(found + 1);
                     Console.WriteLine($"{UserName}: {message}");
                     found     = message.IndexOf("&");
                     recepient = message.Substring(0, found);
                     Console.WriteLine($"recepient: {recepient}");
                     message = message.Substring(found + 1);
                     Console.WriteLine($"{UserName}: {message}");
                     found       = message.IndexOf("&");
                     textMessage = message.Substring(0, found);
                     Console.WriteLine($"textMessage: {textMessage}");
                     message = message.Substring(found + 1);
                     Console.WriteLine($"{UserName}: {message}");
                     found = message.IndexOf("&");
                     date  = message.Substring(0, found);
                     Console.WriteLine($"date: {date}");
                     message = message.Substring(found + 1);
                     time    = message;
                     Console.WriteLine($"time: {time}");
                     server.SendMessage(originalMessage, recepient);
                     dBconnection.ConnectDB();
                     string query = $"INSERT INTO Messages(sender, recepient, text, date, time) VALUES ('{sender}', '{recepient}', " +
                                    $"'{textMessage}', '{date}', '{time}');";
                     dBconnection.InsertQuery(query);
                     dBconnection.ForceClose();
                 }
             }
             catch
             {
                 message = String.Format("{0}: покинул чат", UserName);
                 Console.WriteLine(message);
                 break;
             }
         }
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
     }
     finally
     {
         // в случае выхода из цикла закрываем ресурсы
         server.RemoveConnection(this.Id);
         Close();
     }
 }