Я пишу измеритель скорости интернета. Я хочу измерить скорость интернета, не сохраняя удаленный файл ни в файл, ни в память - мне нужно получить данные и забыть о них, поэтому кажется, что WebClient и StreamReader для этого не годятся (возможно, мне следует наследовать их и переопределить некоторые частные методы). Как это сделать?
Измерение скорости интернета без сохранения удаленного файла
Ответы (2)
Я думаю, что при написании такой системы вы также должны выбрать, какой именно размер файла вы хотите загрузить. В любом случае, вы можете скачать части файла, если «очень большой» или «бесконечный» размер является проблемой. Вы можете использовать HttpWebRequest.AddRange http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.addrange.aspx
Вы можете использовать System.Net.WebRequest
для измерения пропускной способности, используя асинхронные вызовы для захвата данных по мере их чтения.
Пример кода MSDN для WebRequest.BeginGetResponse показывает один метод использования асинхронных методов для чтения данных из удаленного файла по мере их получения. В примере данные ответа хранятся в StringBuilder
, но вы можете пропустить это, так как сами данные вас не интересуют.
Я добавил в их пример некоторый код синхронизации и протестировал его на нескольких загрузках больших файлов, похоже, он выполняет ту работу, для которой он вам нужен.