скорость аплода давнлода

Тема в разделе "WASM.NETWORKS", создана пользователем 984259h, 9 июн 2011.

  1. 984259h

    984259h New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2007
    Сообщения:
    194
    Всем привет может кто знает как программно определить скорость инета ?
    сначала думал грузить файл в обе стороны но этот вариант не подходит .
    есть ли другие варианты ?
    заранее спасибо
     
  2. KIV

    KIV Member

    Публикаций:
    0
    Регистрация:
    16 июл 2009
    Сообщения:
    231
    А как иначе?
    По-любому придётся передавать данные на сервер и получать назад. Не устраивая передачу данных фактическую скорость определить невозможно. Только максимальную скорость подключения (вроде того как Windows пришет при подключении - 100 МБит/сек), но эти данные практически всегда далеки от реальности.
     
  3. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    можно попробовать запросить у модема страничку 192.168.1.1 и пропарсить ответ, там есть upstream и downstream (как минимум в d-link'ах, в других не знаю).
     
  4. dinoweb

    dinoweb Дмитрий

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    129
    Адрес:
    Россия. Красноярск
    Это скорость коннекта с провайдером, и не зависит от тарифа...

    Врятли есть варианты кроме как - скачать файл и изменить скорость, либо подождать пока юзер начнёт скачивать какой-нибудь файл, и посмотреть скорость загрузки. Но скорость скачивания произвольного файла редко равна скорости инета (сервер отдаёт медленнее, например).
     
  5. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    эта скорость напрямую зависит от тарифа, и ограничивается провайдером.
    Переходишь на другой тариф - изменяются скорости. В прошлом месяце у меня был анлим, ограниченный только пропускной способностью линии, и downstream был 8148 кбит (настраивалось на устойчивый максимум в прямом эфире - при общении с оператором по телефону), в этом месяце перешёл на тариф 2 мегабита, downstream теперь 2043.
     
  6. onSide

    onSide New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    476
    без отправки данных никак не выйдет. Это физически нереально)
     
  7. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Отправка данных вообще ничего не дает.
    Скорость будет зависеть от конкретного сервера, с которым ведется обмен. У одного сервера скорость выше, у другого ниже, ориентироваться на это нельзя.
    Получим только скорость работы с данным конкретным сервером, а не скорость, которую позволяет интернет-соединение

    Ради примера: торренты канал позволял скачивать со скоростью 900 - 1000 кБ/сек. А просто закачки с одного сервера ни разу не превысили 200 кБ/сек.
     
  8. KIV

    KIV Member

    Публикаций:
    0
    Регистрация:
    16 июл 2009
    Сообщения:
    231
    Ну во-первых, торренты устанавливают соединения не только с внешними серверами (точнее другими торрент-клиентами, но вне сети этого провайдера), но и с тем, что находятся в локальной сети провайдера. А часто у провайдеров по тарифам скорость в локальной сети (то есть между двумя компьютерами, которые подключены к одному провайдеру) не ограничивается.
    А во-вторых, для проверки скорости надо использовать хороший сервер, который гарантированно подключён к интернету через более скоростной канал, чем предоставляет любой провайдер для простых людей.
    Например, тот же Yandex, который имеет сервис определения скорости, обладает такими серверами и поэтому всегда будет показывать правильную скорость.
     
  9. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    984259h
    Ну если усторят приблизительные данные,
    то можно погуглить GetIfTable()
    Там в структуре MIB_IFROW
    dwMtu-The Maximum Transmission Unit (MTU) size in bytes.
    dwSpeed-The speed of the interface in bits per second.

    http://msdn.microsoft.com/en-us/library/aa365943(VS.85).aspx
     
  10. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Можно попробовать ковырнуть флеш, который используется на сервисе http://speedtest.net/
    чтобы посмотреть, как он работает. И использовать его схему работы. Он показывает точно (и аплоад, и даунлоад)
     
  11. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Кстати, вот тут http://speedtest.net/mini.php предлагают разместить на своём сервере такой счетчик.
    Может там в зипе и есть необходимое.
     
  12. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    535
    Чтобы не зависеть от производительности сервера - можно открыть несколько параллельных закачек на разные сервера. Начать считать от момента, когда начнут поступать данные от самого последнего сервера и закончить считать в момент самого первого окончания.
     
  13. 984259h

    984259h New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2007
    Сообщения:
    194
    _sheva740
    есть какие то функции что бы раздельно определить скорость приема и передачи данных ?
     
  14. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    1.173
    Адрес:
    подполье
    //чо та такое для отправки и аналогично же для приема же

    инт цРид=1,олд_тайм=0,коунт_байтенг=0, шпиид=0;
    бает буфер[128];
    вайле(цРид!=0)
    {
    ньютайм=ГетТикЦоунт();
    иф (1000=<(ньютайм-олдтайм))
    {
    шпиид=коунт_байтенг;
    принтф("%у килобаетов в сек\н",шпиид);
    Олд_тайм=нью_тайм;
    коунт_байтенг=0;
    }
    ридфаел(хендолфаел,&буфер,сайзоф(буфер),цРид,нуль);
    фор (сендкоунт=0;цРид==(сендкоунт=+(сенд(хендолсокет,&буфер,цРид,нуль)));)
    {
    }
    коунт_байтенг=+цРид;
    }
     
  15. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    наверно :) Размер зипа 94Мб!!! Похоже там карта всех серверов для тестирования, а тестирование все равно идет на серверах. Т.е. можно только клиентскую часть поймать. Думаю ее проще через общение со speedtest поймать, чем искать среди 94 Мб
     
  16. 984259h

    984259h New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2007
    Сообщения:
    194
    _sheva740
    у меня на впн след. код показывает :
    Код (Text):
    1. DWORD dwSize = 0;
    2.    GetIfTable(NULL,&dwSize, false);
    3.  
    4.    
    5.    PVOID pMemory = (PVOID)GlobalAlloc(GMEM_ZEROINIT,dwSize);
    6.    PMIB_IFTABLE pMibIfTable = (PMIB_IFTABLE)pMemory;
    7.  
    8.    GetIfTable(pMibIfTable,&dwSize,TRUE);
    9.    for (int i = 0 ; pMibIfTable->dwNumEntries > i; i++)
    10.    {
    11.        if (pMibIfTable->table[i].dwMtu == 1000)
    12.        {
    13.        
    14.           Sleep(1000);
    15.        
    16.        }
    17.      
    18.    }
    19.    GlobalFree(pMemory);
    [​IMG]
    что толком показывает значение dwMtu ???? и по каким признакам определить активный адаптер (тот который в текущем времени подключен к интернету ) ???
     
  17. 984259h

    984259h New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2007
    Сообщения:
    194
    MTU - определяет размер фрейма при передаче блока данных на канальном уровне сети ???