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(); }
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); } }