Пример #1
0
 public void Send(string data) // отправляет данные на сервер
 {
     try
     {
         byte[] buff      = DESCryptography.Encrypt(data, DESCryptography.Key, DESCryptography.Iv); // шифруем сообщение
         int    bytesSend = _serverSocket.Send(buff);                                               // передаем массив байтов в сокет
     }
     catch
     {
         Print("Нет подключения к серверу...");
     }
 }
Пример #2
0
        private void Listner() // слушаем сообщения с сервера
        {
            try
            {
                while (_serverSocket.Connected)                                                        // если сокет подключен к удаленному узлу, то считываем данные
                {
                    byte[] buffer   = new byte[65536];                                                 // создаем буфер для приема сообщений
                    int    bytesRec = _serverSocket.Receive(buffer);                                   // принимаем данные
                    Array.Resize(ref buffer, bytesRec);                                                // обрезаем массив байтов по длине полученного сообщения
                    buffer = DESCryptography.Decrypt(buffer, DESCryptography.Key, DESCryptography.Iv); // расшифровываем сообщение
                    string data = Encoding.UTF8.GetString(buffer);                                     // преобразуем массив байтов в текст
                    HandleCommand(data);                                                               // передаем сообщение в обработчик команд
                }
            }
            catch (Exception)
            {
                ClearChat();        // очищаем окно чата
                ClearOnlineUsers(); // очищаем список онлайн пользователей
                Print($"Вы были отключены от сервера!");

                // Возвращаем все элементы формы в начальное положеие
                if (menuStrip.InvokeRequired)
                {
                    TxtBoxUserName.Invoke(new Action(() => регистрацияToolStripMenuItem.Enabled = true));
                }
                else
                {
                    регистрацияToolStripMenuItem.Enabled = true;
                }

                if (TxtBoxUserName.InvokeRequired)
                {
                    TxtBoxUserName.Invoke(new Action(() => TxtBoxUserName.Enabled = true));
                }
                else
                {
                    TxtBoxUserName.Enabled = true;
                }

                if (TxtBoxUserPassword.InvokeRequired)
                {
                    TxtBoxUserPassword.Invoke(new Action(() => TxtBoxUserPassword.Enabled = true));
                }
                else
                {
                    TxtBoxUserPassword.Enabled = true;
                }

                if (BtnEnterChat.InvokeRequired)
                {
                    BtnEnterChat.Invoke(new Action(() => BtnEnterChat.Enabled = true));
                }
                else
                {
                    BtnEnterChat.Enabled = true;
                }

                if (BtnChatSend.InvokeRequired)
                {
                    BtnChatSend.Invoke(new Action(() => BtnChatSend.Enabled = false));
                }
                else
                {
                    BtnChatSend.Enabled = false;
                }

                if (TxtBoxChatMsg.InvokeRequired)
                {
                    TxtBoxChatMsg.Invoke(new Action(() => TxtBoxChatMsg.Enabled = false));
                }
                else
                {
                    TxtBoxChatMsg.Enabled = false;
                }

                if (BtnEnterChat.InvokeRequired)
                {
                    BtnEnterChat.Invoke(new Action(() => BtnEnterChat.Text = "Войти"));
                }
                else
                {
                    BtnEnterChat.Text = "Войти";
                }
            }
        }