Beispiel #1
0
        // Обработка запросов от пользователя. При получении пакета с кодом disconnect прекращаем
        private void Process_User(ref TcpClient client, int id)
        {
            bool connected = true;

            try
            {
                MessageClass message;
                while (connected)
                {
                    message = GetFromStream(ref client);
                    switch (message.code)
                    {
                    // При получении публичного ключа отсылаем свой.
                    case codes.PUBLIC_KEY:
                        connectedUsers[id] = JsonConvert.DeserializeObject <RSAParameters>(message.info);
                        // Вывод значений в textbox-формы
                        textDecrypt.BeginInvoke(new Action(() => textDecrypt.Text = "Sent to user " + id));
                        textStatus.BeginInvoke(new Action(() => textStatus.Text   = message.info));
                        SendToStream(new MessageClass(codes.PUBLIC_KEY, rs.PublicKeyString()), ref client);
                        break;

                    // При получении зашифрованного сообщения расшифровываем своим приватным ключом, добавляем текст,
                    // шифруем и отсылаем
                    case codes.ENCRYPTED_MESSAGE:
                        textDecrypt.Text = message.info;
                        SendToStream(new MessageClass(codes.ENCRYPTED_MESSAGE, rs.Encrypt("Пажилое сообщение: " +
                                                                                          rs.Decrypt(message.info), connectedUsers[id])), ref client);
                        break;

                    // Удаляем пользователя, захотевшего уйти
                    case codes.DISCONNECT_MESSAGE:
                        connectedUsers.Remove(id);
                        connected = false;
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show("In Process_User: " + e.Message);
            }
        }
Beispiel #2
0
 // При загрузке формы выводится публичный ключ клиента и отключается кнопка отправки
 private void MainForm_Load(object sender, EventArgs e)
 {
     textPublicKey.Text = rs.PublicKeyString();
     buttonSend.Enabled = false;
 }