Возможно ли узнать скорость инет соединения используя эхо запрос? Если можно установить размер нагрузки ICMP пакета до 65 000 байт и замерять время прохождения ответа, будет ли это реальной скоростью подключения?
не советовал бы так тестить. потому что ICMP мало надежный протокол, при этом он менее приоритетный и может фаером рубиться. Вообще быстрее просто приконнектится к серваку и запросить страницу большую.
я пробовал замерять момент между началом загрузки страницы и нулевым размером буфера через таймер в отдельном потоке Code: Procedure timer(it.l) Repeat Delay(1) speedn.l = speedn.l + 1 Until speedn.l = 10000 EndProcedure InternetReadFile_(hURL,@Buffer, Len(Buffer), @Bytes) CreateThread(@timer(), 0) If Bytes = 0 chk.d = Len(res)/speedn.l Debug Str(chk.d)+" Kb/s" EndIf но результат очень странный, при скорости 4 Мбит/с выдало в 2 раза меньше может дело в используемом сервере? побывал грузить длинные манулы с ripn.net и соглашение с гугла
спит 1 мс в отдельном потоке а потом плюсует единицу в переменную, это для замера к-ва мсок с начала загрузки, код на PureBasic, я ток кусок привел, работает норм я думаю дело в сервере, гугл и рипн режут скорость в зависимости от того какую страницу запрашивает юзер, мне нужен сервер который дает минимум 10 Мбит/с на загрузку страниц
Я тебе к тому, что твоя процедура может неправильно считать время Я сделал тривиальный тест на дельфи: Все как у тебя: задержка, инкремент переменной Так вот, в сообщении выдало 1953. Т.е. этот цикл выполнялся в два раза дольше чем должен был (по твоим рассуждениям) Отсюда и у тебя неправильные результаты, типа скорость в 2 раза ниже. PS Это предположение
нет, все четко, 10 секунд в цикле на глаз 10 секунд так понял что на делфи гдет лишнее время теряется у мя четко 10 сек
Inc - обычный инкремент. Т.е. увеличение целочисленной переменной на единицу Тоже самое что и i := i +1; Или те кто на бэйсике даже не знают что такое инкремент? Не пойму мне видео снять еще? Зачем мне врать то PS От твоего поста я еще больше убедился в своей правоте Сначала вычисляется GetTickCount - Old, и только потом в дело вступает ГУИ и выводит что уже было вычислено. Да и все равно, задержка не может быть такой большой Код в студию! Видать ты неправильно время измерил. Не забывай что во время выполнения процедуры происходит переключение контекста. Ты его не учитываешь, а ведь время то на него уходит
пардон, не заметил замер GetTickCount я знаю что такое инкремент, просто мой бейсик генерит ровный асм где я проверил что лишних задержек в потоке нет Делфи теряет время на что-то, попробуй вынести в поток и будет четко 1000 в переменной и GetTickCount больше на тысячу
нет, и вот почему. при пинге, скорость будет в каждый раз зависеть от прохождения пинга через роутинги до ЯйПи. и расхождение может быть разным - в разы отличатся.
Delay() аналог Sleep() в винде 10 тысяч раз Sleep(1) в отдельном потоке = 10 секунд на наручных часах 100 тысяч раз = 101 секунда из за инкремента переменной мне пох на эту погрешность
GhostOnline, ты хоть когда-нибудь слышал, что такое потоки? Код ТСа не спит, как твой, а работает в два потока - один таймер, другой замеряет скорость. У тебя же все идет постепенно в одном потоке, из-за чего у тебя он выполняется в два раза дольше. По теме: ТС, реальную скорость интернета, соединяясь с одним сервером, ты не вычислишь никак. Все сервисы онлайн-проверки - этому подтверждение. Допустим, ты написал программу, которая скачивает 10 мбайт абсолютно ненужной информации с твоего русского сервера. Я запустил её у себя на компе (2 мбита, к примеру) - скачал за 40 секунд. Открыл на компьютере с аналогичной скоростью, но в Зимбабве - в 3 раза дольше качал, хотя скорость та же. Улавливаешь? Тут роль играет отдаленность А от Б, где А - комп, измеряемый скорость, Б - сервер измерения. А вообще, лучшими тестерами скорости являются p2p сети... Думаю, сам знаешь почему.
получилось замерять точную скорость через 20 обращений к URL Code: "http://www.google.com/search?hl=ru&site=&q="+Str(Random(100)) точность до 1 Кб/с но гуголь после нескольких таких тестов забанил, мол "your computer or network sending automated queries" гугл просто идеален для замеров, у него сервера почти во всех странах, вот только ругается собака вот пример: http://multi-up.com/289222 з.ы. эвристика может орать типо Malware, прост нету полезной нагрузки, ток InternetOpen InternetOpenUrl InternetReadFile