private void ChatIn() // Авторизация в чате { if (BtnEnterChat.InvokeRequired) { BtnEnterChat.Invoke(new Action(() => BtnEnterChat.Enabled = false)); } else { BtnEnterChat.Enabled = false; } Connection(); Stopwatch timeConnect = new Stopwatch(); timeConnect.Start(); while (timeConnect.Elapsed < TimeSpan.FromSeconds(5)) // в течении 5 секунд проверяем установленно ли подключение к серверу { if (_connection) // как только подключение будет установленно отправляем данные пользователя на сервер { ClearChat(); string Name = TxtBoxUserName.Text; string Password = GetHashString(TxtBoxUserPassword.Text); Send($"#authoriz&{Name}~{Password}"); Stopwatch time = new Stopwatch(); time.Start(); while (time.Elapsed < TimeSpan.FromSeconds(5)) { if (_authoriz) { AuthSucsess(); MessageBox.Show("Вы авторизированы!", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information); break; } } time.Stop(); if (!_authoriz) { ChatLogOff(); } break; } } timeConnect.Stop(); // останавливаем таймер if (!_connection) { if (BtnEnterChat.InvokeRequired) { BtnEnterChat.Invoke(new Action(() => BtnEnterChat.Enabled = true)); } else { BtnEnterChat.Enabled = true; } } }
private void ChatLogOff() // выйти из чата { 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.Enabled = true)); } else { BtnEnterChat.Enabled = true; } if (BtnEnterChat.InvokeRequired) { BtnEnterChat.Invoke(new Action(() => BtnEnterChat.Text = "Войти")); } else { BtnEnterChat.Text = "Войти"; } if (menuStrip.InvokeRequired) { TxtBoxUserName.Invoke(new Action(() => регистрацияToolStripMenuItem.Enabled = false)); } else { регистрацияToolStripMenuItem.Enabled = false; } _authoriz = false; _connection = false; ClearChat(); // очищаем чат ClearOnlineUsers(); // очищаем список онлайн пользователей EndSession(); // отключаемся от сервера }
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 = "Войти"; } } }
private void AuthSucsess() { // Активируем видимость элеменов чата и отключаем видимость элементов регистрации в чате if (TxtBoxChatMsg.InvokeRequired) { TxtBoxChatMsg.Invoke(new Action(() => TxtBoxChatMsg.Enabled = true)); } else { TxtBoxChatMsg.Enabled = true; } if (BtnChatSend.InvokeRequired) { BtnChatSend.Invoke(new Action(() => BtnChatSend.Enabled = true)); } else { BtnChatSend.Enabled = true; } if (TxtBoxUserPassword.InvokeRequired) { TxtBoxUserPassword.Invoke(new Action(() => TxtBoxUserPassword.Enabled = false)); } else { TxtBoxUserPassword.Enabled = false; } if (TxtBoxUserName.InvokeRequired) { TxtBoxUserName.Invoke(new Action(() => TxtBoxUserName.Enabled = false)); } else { TxtBoxUserName.Enabled = false; } if (TxtBoxChatMsg.InvokeRequired) { TxtBoxChatMsg.Invoke(new Action(() => TxtBoxChatMsg.Focus())); } else { TxtBoxChatMsg.Focus(); } if (BtnEnterChat.InvokeRequired) { BtnEnterChat.Invoke(new Action(() => BtnEnterChat.Enabled = true)); } else { BtnEnterChat.Enabled = true; } if (BtnEnterChat.InvokeRequired) { BtnEnterChat.Invoke(new Action(() => BtnEnterChat.Text = "Выйти")); } else { BtnEnterChat.Text = "Выйти"; } }