// Протокол получения файла. public void Receiving(string s) { // Обработанное входящее сообщение. Messages.Message mess = new FilePartMessage(string.Empty); // Сообщение содержащее имя. RequestMessage name; // Уведомительное сообщение. ResponseMessage response = new ResponseMessage("Response"); // Буффер для получения ответа. byte[] pack = new byte[1024]; // Выделение пути к файлу. string path = Path.Combine(cl_path, s); // Выделение потоков для получения файла. using (FileStream outFile = File.Open(path, FileMode.Create, FileAccess.Write, FileShare.None)) using (NetworkStream stream = clnt.GetStream()) { name = new RequestMessage(s); // Отправка имени. NW.Send(name, stream); do { // Получение части файла. mess = NW.Recieve(stream); // Проверка на завершение скачивания. if (!(mess is EndMessage)) { // Запись в файл. outFile.Write(mess.Get_Info(), 0, mess.Get_Info().Length); // Отправка уведомления. NW.Send(response, stream); } } while (!(mess is EndMessage)); // Отчет об успешном скачивании. MessageBox.Show("Downloading is complete!", "Complete", MessageBoxButtons.OK, MessageBoxIcon.Information); } }