Exemple #1
0
 private void _tcpmoduleClient_Connected(object sender, string result)
 {
     _tcpmoduleClient_ShowStatusMessage(result);
     //только здесь отправляем файлы, если все гуд
     if (result != "Подключение успешно!")
     {
         return;
     }
     if (checkBoxIsCrypt.Checked)
     {
         SendDataParam param = new SendDataParam();
         //производим обмен ключами
         //создаем публичный ключ
         _tcpmoduleClient.DiffieHellman = new DiffieHellmanWorker();
         param.Message = Convert.ToBase64String(_tcpmoduleClient.DiffieHellman.PublicKey);
         //отсылаем второму участнику
         var t = new Thread(_tcpmoduleClient.SendData);
         t.Start(param);
     }
     else
     {
         //отправим файлы без шифрования
         var t         = new Thread(_tcpmoduleClient.SendMultipleFiles);
         var fileslist =
             (from object item in listBoxFilesToSend.Items select item.ToString()).ToList();
         t.Start(fileslist);
     }
 }
        /// <summary>
        /// Функция для передачи списка файлов
        /// </summary>
        /// <param name="files">Список файлов</param>
        public void SendMultipleFiles(object files)
        {
            if (files == null)
            {
                throw new ArgumentNullException("files");
            }
            var listoffiles = (List <string>)files;

            foreach (var file in listoffiles)
            {
                //SendFileName = file;
                var param = new SendDataParam
                {
                    BufferSize  = 0,
                    Filename    = file,
                    IsFileCrypt = IsCrypt,
                    Message     = null,
                    Rawbuffer   = null
                };
                SendData(param);
            }
            DisconnectClient();
        }
Exemple #3
0
        private void _tcpmoduleServer_Receive(object sender, ReceiveEventArgs e)
        {
            if (e.SendInfo.Message != null)
            {
                //сервер получил клиентский паблик в ответ формируем свой и отправляем клиенту
                _tcpmoduleServer.DiffieHellman = new DiffieHellmanWorker();
                //отсылаем второму участнику
                _tcpmoduleServer.IsCrypt = true;
                var t     = new Thread(_tcpmoduleServer.SendData);
                var param = new SendDataParam
                {
                    Message = Convert.ToBase64String(_tcpmoduleServer.DiffieHellman.PublicKey)
                };
                t.Start(param);
                //и формируем свой секретный ключ
                _tcpmoduleServer.DiffieHellman.CreateSecretKey(e.SendInfo.Message);
                _tcpmoduleServer_ShowStatusMessage(string.Format("Получен публичный ключ клиента:{0}", e.SendInfo.Message));
            }

            if (e.SendInfo.Filesize > 0)
            {
                _tcpmoduleServer_ShowStatusMessage("Файл: " + e.SendInfo.Filename);
            }
        }