public CopyToAsync ( |
||
destination | ||
bufferSize | int | |
cancellationToken | ||
return | System.Threading.Task |
/// <summary> /// Приём файла. /// </summary> /// <param name="socket">Сокет.</param> private void ReceiveFile(Socket socket) { // Генерируем уникальное имя для файла. var tmp_file_name = string.Format("{0}_{1}", DateTime.Now.Ticks, _fileCount); _fileCount++; var ns = new NetworkStream(socket); var remote_address = (socket.RemoteEndPoint as IPEndPoint).Address.ToString(); var message_type = (MesasageType)ns.ReadByte(); if (message_type == MesasageType.Text) { byte[] buffer = new byte[256]; socket.Receive(buffer); Console.WriteLine("Принято сообщение: {0}", Encoding.Unicode.GetString(buffer)); return; } var fs = new FileStream(tmp_file_name, FileMode.CreateNew); ns.CopyToAsync(fs).ContinueWith((ar) => { fs.Close(); fs.Dispose(); ns.Close(); ns.Dispose(); FileInfo file = new FileInfo(tmp_file_name); if (FileSize.HasValue) { if (FileSize == file.Length) { ReceviceFileCount++; } else { Console.WriteLine("Размер принятого файла не соответствует отправленному ({0} != {1}).", FileSize, file.Length); } } Console.WriteLine("Получен файл"); if (message_type == MesasageType.ReveiveFileAndExecProc) { ExecProcAndSendFile(tmp_file_name, remote_address, _remotePort); } else { if (IsDeleteFiles) { File.Delete(tmp_file_name); } } }); }