// Протокол отправки файла.
        public void Sending()
        {
            // Сообщение для коммуникации с клиентом.
            Message file_part = new FilePartMessage(string.Empty);
            // Сообщение для обработки подтверждения.
            Message response = new ResponseMessage("resp");
            // Уведомление о типе трансляции хаба.
            Inform_of_Down_Message down = new Inform_of_Down_Message(Path.GetFileName(flname));
            // Поток общения с хабом.
            NetworkStream Cur_Hub;
            Files.TryGetValue(flname, out Cur_Hub);

            NW.Send(down, Cur_Hub);

            using (NetworkStream stream = new NetworkStream(client))
            {
                NW.Send(response, Cur_Hub);
                do
                {
                    mes = NW.Recieve(Cur_Hub);
                    if (mes != null)
                    {
                        if (!(mes is EndMessage))
                        {
                            // Отправка сообщения клиенту.
                            NW.Send(mes, stream);

                            // Ожидание ответа.
                            do
                            {
                                response = NW.Recieve(stream);
                            }
                            while (response.Get_Data() == string.Empty);

                            // Отправка уведомления хабу.
                            NW.Send(response, Cur_Hub);
                        }
                        else
                        {
                            mes = new EndMessage("End of file.");
                            NW.Send(mes, stream);
                        }
                    }
                } while (!(mes is EndMessage));

                // Уведомление об окончании операции.
                Console.WriteLine("Downloading is complete!");
            }
        }
        // Протокол получения файла.
        public void Receiving()
        {
            // Уведомление о получении.
            Message response = new ResponseMessage("Response");
            // Выделение пути к файлу.
            string path = Path.Combine(@"D:\DFS", flname);
            // Уведомление о типе трансляции хаба.
            Inform_of_Rec_Message rec = new Inform_of_Rec_Message(Path.GetFileName(flname));

            NW.Send(rec, Hubs[0]);
            using (NetworkStream stream = new NetworkStream(client))
            {
                // Отправка уведомления клиенту.
                NW.Send(response, stream);
                do
                {
                    mes = NW.Recieve(stream);
                    if (mes != null)
                    {
                        if (!(mes is EndMessage))
                        {
                            // Отправка сообщения хабу.
                            NW.Send(mes, Hubs[0]);

                            // Ожидание ответа.
                            do
                            {
                                response = NW.Recieve(Hubs[0]);
                            }
                            while (response.Get_Data() == string.Empty);

                            // Отправка уведомления клиенту.
                            NW.Send(response, stream);
                        }
                        else
                        {
                            mes = new EndMessage("End of file.");
                            NW.Send(mes, Hubs[0]);
                        }
                    }
                } while (!(mes is EndMessage));

                // Уведомление об окончании операции.
                Console.WriteLine("Transmisson is complete!");
            }
        }
        // Отправка файла.
        public void Send(object income)
        {
            stream = (NetworkStream)income;
            // Строка для хранения необработанного ответа.
            string assis = string.Empty;
            // Строка для хранения обработанного ответа.
            string decrypted = string.Empty;
            // Буффер для хранения полученного ответа.
            byte[] bytes = new byte[1024];
            // Объем буффера передаваемых данных.
            const int buffersz = 1022;
            // Буффер содержащий передаваемый пакет данных.
            byte[] buffer = new byte[buffersz];
            //Количество считанных байт.
            int btscpd = 0;
            // Строка для отправки уведомлений.
            byte[] message = new byte[1024];
            // Сообщение для коммуникации с клиентом.
            Message file_part = new FilePartMessage(string.Empty);
            // Сообщение для обработки подтверждения.
            Message response = new ResponseMessage(string.Empty);

            // Выделение пути к запрашиваемому файлу.
            string path = Path.Combine(@"D:\DFS", name);

            // Провека существования запрашиваемого файла.
            if (File.Exists(path))
            {
                // Начало передачи.
                using (FileStream inFile = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    // Ожидание ответа.
                    do
                    {
                        response = NW.Recieve(stream);
                    }
                    while (response.Get_Data() == string.Empty);

                    do
                    {

                        // Считывание данных из файла.
                        btscpd = inFile.Read(buffer, 0, buffersz);
                        file_part = new FilePartMessage(Encoding.ASCII.GetString(buffer));

                        // Проверка на наличие неотправленных данных.
                        if (btscpd > 0)
                        {
                            // Отправка пакета.
                            NW.Send(file_part, stream);

                            // Получение подтверждения.
                            while (true)
                            {
                                response = NW.Recieve(stream);

                                if (response.Get_Data() != string.Empty)
                                {
                                    response = new ResponseMessage(string.Empty);
                                    break;
                                }
                            }
                        }
                    } while (btscpd > 0);

                    // Отправка уведомления о конце файла.
                    file_part = new EndMessage("End of file");
                    NW.Send(file_part, stream);

                    // Уведомление о завершении процесса.
                    Console.WriteLine("Translation thread: File has been sent.");
                }
            }
        }