| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > RASGetLinkStatistics |
| Автор: bems 3.8.2006, 14:23 | ||
Добрый день. У меня такая проблема. Я пытаюсь пощитать количество байт, переданных и принятых моим модемом за секунду. Делаю так:
И это все в таймере с интервалом 1с. (stats.dwBytesXmited+stats.dwBytesRcved-BytesIn-BytesOut)*8 должно давать количество бит за интервал ((stats.dwConectionDuration-time)/1000 должно быть длиной интервала в секундах, то есть близко к 1. Проблема в том, что иногда значение UsedBps становиться несколько большим, чем stats.dwBps Или я считать не умею, или не правильно понимаю значения, которыми заполняет структуру функция RasGetLinkStatistics. В любом случае прошу ткнуть меня носом. Спасибо. |
| Автор: dumb 3.8.2006, 16:08 |
| брр.. непонятно в чем непонятки. ты же считаешь мгновенное(в течение последней секунды) значение bps, а dwBps считается с момента установления линка. |
| Автор: bems 3.8.2006, 17:21 |
| Насколько я знаю оно вообще не считается. До него договариваются железяки в процессе дозвона. И поэтому (как мне кажеться), за секунду не можт быть больше чем это значение. Иначе почему dwBps не меняется в процессе всего соединения? |
| Автор: dumb 3.8.2006, 17:45 |
| пардон, доку прочитал неверно. тогда тут может быть только одна причина - сжатие. передаешь мег текста, протокол жмет до 10 кил - получаешь превышение установленной при хэндшейке величины bps. кстати, точно уже не помню, но вроде бывает(в зависимости от настроек), что после ретрейнов устанавливается скорость выше, чем была при установлении соединения. |
| Автор: bems 4.8.2006, 08:43 | ||||||
у меня dwCompressionRatioIn, dwCompressionRatioOut - нули
И что из них ограничено dwBps? То есть имеется в виду, что можно dwBps читать в это же время столькоже пересылать? не понял ничего...
Добавлено @ 08:50
|
| Автор: mai62 4.8.2006, 09:36 | ||
Да. Исторически сложилось, что первые модемы подключались через последовательный порт, в котором есть отдельная физическая линия для передачи данных и отдельная для приема (и работать они могут одновременно). dwBps определяет скорость передачи данных по каждой из этих линий. Поэтому надо считать кол-во прошедших байтов по каждой из этих линий (каждому направлению передачи данных) отдельно. |
| Автор: bems 4.8.2006, 10:09 | ||
|
| Автор: dumb 4.8.2006, 14:00 |
ну, для начала, это таки относящиеся к софтовому сжатию переменные. я же говорил про хардовое. а по поводу подсчета - умножать надо на 8, ибо стоповые биты и четности всякие - это из другой оперы. каким образом и сколько бит используется для передачи одного байта модемом в линии нам не сильно интересно - это сугубо его(модема) лично дело. режим передачи (дуплекс или симплекс) определяется настройками хардового протокола соединения. так что, похоже, надо просто выводить link bps, in bps, out bps. ps. могу ошибаться - давно дело было... ![]() Добавлено @ 14:02 опять же, есть подозрение, что значение dwBps(как и то, что выдает модем при соединении) является условным и приблизительным. |
| Автор: bems 4.8.2006, 14:40 | ||
а) то, что выдает модем при соединении является условным и приблизительным. есть подозрение, что значение dwBps тоже. б) есть подозрение, что эти значения условны и приблизительны. Насколько я знаю, dwBps это и есть то что выдает модем в строке CONNECT. Поэтому если ты имел ввиду вариант а, то расскажи пожалуйста о "то, что выдает модем при соединении" или дай ссылку. Что должно означать это значение, если оно условно и приблизительно. Не думаю ,что оно предназначено только для вывода пользователю. |
| Автор: dumb 4.8.2006, 15:31 |
| не сказал точно, потому что не работал с этими функциями и не видел значений dwBps. вариант а. цифра, указываемая модемом в строке коннекта является характеристикой скорости, а не точным значением пропускной способности. тебя не смущает тот факт, что эти цифры из таблицы и всегда округленные? - 9600,12000,14400,16800,19200,21600 итд итп. реальная скорость может быть как ниже(помехи, ретрейн с понижением), так и выше(сжатие, ретрейн с повышением(?)). ссылки не дам, ибо нет их у меня. зато в гугле есть. ps. для меня остается загадкой, какую именно правду ты ищешь и зачем она тебе... ![]() |
| Автор: mai62 5.8.2006, 00:32 | ||||
Думаю надо считать отдельно и сравнивать каждое значение с dwBps.
Это не что иное как стандартные скорости обмена по последовательному порту. Конечно, они задают не реальную скорость обмена, а максимально достижимую. А точнее, это значение задает ожидаемую длительность одного бита как t=1/speed (именно это важно поскольку обмен по последовательному порту асинхронный и представление о длине бита должно быть приблизительно (+-5%) равным у обоих участников обмена (в данном случае модема и компьютера)). |
| Автор: bems 5.8.2006, 11:19 |
| спасибо |