Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 28.01.2017
Сообщений: 29

Скорость загрузки файла на FTP

06.06.2018, 09:38. Показов 2512. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Подскажите пожалуйста по поводу вычисления скорости загрузки файла на сервер.

Код такой.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
        public void working()
        {
 
            FileInfo fileInf = new FileInfo(filePath);
            string uri = "ftp://" + "127.0.0.1" + "/" + fileInf.Name;
            FtpWebRequest reqFTP;
            // Создаем объект FtpWebRequest
            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + "127.0.0.1" + "/" + fileInf.Name));
            // Учетная запись
            reqFTP.Credentials = new NetworkCredential("guest", "1234");
            reqFTP.KeepAlive = false;
            // Задаем команду на закачку
            reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
            // Тип передачи файла
            reqFTP.UseBinary = true;
            // Сообщаем серверу о размере файла
            reqFTP.ContentLength = fileInf.Length;
 
 
 
            // Буффер в 2 кбайт
            int buffLength = 2048;
            byte[] buff = new byte[buffLength];
            int contentLen;
            // Файловый поток
            FileStream fs = fileInf.OpenRead();
 
 
            try
            {
                Stream strm = reqFTP.GetRequestStream();
                // Читаем из потока по 2 кбайт
 
                contentLen = fs.Read(buff, 0, buffLength);
                // Пока файл не кончится
                while (contentLen != 0)
                {
                    strm.Write(buff, 0, contentLen);
                    contentLen = fs.Read(buff, 0, buffLength);
 
                }
        // Закрываем потоки
        strm.Close();
                fs.Close();
 
            }
            catch (Exception ex)
            {
 
                MessageBox.Show(ex.Message, "Ошибка");
 
            }
        }
Пробовал считать первую а затем последнюю ячейку массива buff[] и измерить скорость заполнения но ничего не выходит, слишком быстро.

C#
1
2
3
4
5
6
7
8
9
10
11
                if (buff[0] != null && a == true)
                {
                    textBox7.Text = Convert.ToString(DateTime.Now.Millisecond);
                    a = false;
                }
 
                if(buff[2047] != null && b == true)
                {
                    textBox8.Text = Convert.ToString(DateTime.Now.Millisecond);
                    b = false;
                }
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.06.2018, 09:38
Ответы с готовыми решениями:

Ограничение скорости загрузки файла по ftp
как мне реализовать ограничение скорости? вот мой код: private void DownLoadFromServer(String url, String savePath, bool...

После окончания загрузки файла с FTP закрыть форму
Вопрос таков, есть код, хочу после окончания загрузки закрыть форму. Форму не закрывает , даже если пишу Form1.ActiveForm.Close(); или...

Зависание загрузки файла с FTP-сервера
Всем привет. Ребята, у меня пробелма когда запускается загрузка файла, она просто зависает и все, но в лога фтп сервера, пишется, что...

5
Эксперт .NET
 Аватар для Rius
13114 / 7675 / 1674
Регистрация: 25.05.2015
Сообщений: 23,409
Записей в блоге: 14
06.06.2018, 09:50
Скорость надо выводить во время загрузки?
Или уже для всего файла, по завершении?
0
0 / 0 / 0
Регистрация: 28.01.2017
Сообщений: 29
06.06.2018, 09:52  [ТС]
Во время загрузки.
0
Эксперт .NET
 Аватар для Rius
13114 / 7675 / 1674
Регистрация: 25.05.2015
Сообщений: 23,409
Записей в блоге: 14
06.06.2018, 09:56
  1. Запоминаете время начала загрузки. Счётчик загруженного числа байт в ноль.
  2. Отправляете пакет.
  3. Счётчик числа байт увеличиваете на количество отправленного.
  4. Скорость получается от деления счётчика на разницу времени между текущим и началом.
  5. Повторяете с п.2.

Если файл мелкий, скорость точно не определить.
0
0 / 0 / 0
Регистрация: 28.01.2017
Сообщений: 29
06.06.2018, 10:05  [ТС]
Меня интересует реализация как самого счётчика так и считывание количества отправленных байт в моем примере.
0
Эксперт .NET
 Аватар для Rius
13114 / 7675 / 1674
Регистрация: 25.05.2015
Сообщений: 23,409
Записей в блоге: 14
06.06.2018, 10:14
Лучший ответ Сообщение было отмечено nasaspace как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
...
    // Файловый поток
    FileStream fs = fileInf.OpenRead();
 
    int counter = 0;
    DateTime startTime = DateTime.Now;
 
    try
    {
        Stream strm = reqFTP.GetRequestStream();
        // Читаем из потока по 2 кбайт
 
        contentLen = fs.Read(buff, 0, buffLength);
        // Пока файл не кончится
        while (contentLen != 0)
        {
            strm.Write(buff, 0, contentLen);
 
            counter += contentLen;
            double rate = Convert.ToDouble(counter) / DateTime.Now.Subtract(startTime).TotalSeconds; // байт в секунду
 
            contentLen = fs.Read(buff, 0, buffLength);
        }
...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.06.2018, 10:14
Помогаю со студенческими работами здесь

Программа виснет после загрузки файла на FTP
Всем здравствуйте, не магу решить проблему, программа виснет после загрузки файла на FTP. Сам файл загружается на FTP но после загрузки...

Передача файла с FTP в папку загрузки Планшета
Добрый день, подскажите пожалуйста, почему программа согласно отладчика затыкается на строке с new FileOutputStream(downloadFile1). Сама...

Vbs скриптом для заливки (Загрузки) БИНАРНОГО файла на хост (гейт, сайт, ftp)
Имеется скрипт: On Error Resume Next set FSO = CreateObject("Scripting.FileSystemObject") Set WSHshell =...

Virtual Box Скорость загрузки операционок при расположении файла *.vdi на другом компьютере
Добрый вечер, имеется два компа, между ними гигабитная локалка, на одном из компов находится файл *.vdi, сама виртуалка поднимается на...

Скачивание файла WebClient с отображением процентов загрузки файла, progressBar, скоростью загрузки файла
Приветствую! Нужна Ваша помощь... Имеется такой кодик, слепленный из готовых примеров System.Net.WebClient webClient =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru