LINUX.ORG.RU

Как узнать текущую скорость передачи/получения данных?


0

0

Сижу вот изучаю сокеты и не нахожу функции которая бы возвращала количество переданной или полученной информации за какой то промежуток времени. Вопрос к знатокам. А существует ли вообще такая функция? Если нет то мне, получается надо будет придумывать костыли потипу проверки в цикле каждую секунду сколько байт вернула мне recv или send? Или можно как то по другому это замутить?


Если вызовы recv и send блокирующие, просто замеряешь время, за которое они выполняются и делишь количество информации на время.

Если неблокирующие (с блокирующими тоже сработает), нужно запоминать количество информации и потраченное время например за 10 секунд. После этого времени делить первое на второе и сбрасывать оба счетчика.

Другими словами, готовой функции нет.

naryl ★★★★★
()
Ответ на: комментарий от naryl

Примерно так и думал сделать если не будет готовой функции. Спасибо за помощь :)

Virun
() автор топика

А что мешает завести две переменных total_send и total_recv и увеличивать их на соответствующие значения, переданные в send и recv? Зачем для такой мелкой ерунды отдельная функция на уровне системы?

mv ★★★★★
()
Ответ на: комментарий от mv

Мне нужно узнавать скорость передачи в еденицу времени. Тоесть прийдется еще со временем работать.

Virun
() автор топика
Ответ на: комментарий от mv

За очепятку извиняюсь, заметил ее уже после того как отправил сообщение.

По поводу таймера. Имхо было бы гораздо удобнее пользоваться стандартной и везде доступной функцией. Тем более мне теперь надо еще и узнавать как работать с таймерами в си или вообще какойнить велосипед придумывать если это дело не кроссплатформенно. =)

Virun
() автор топика
Ответ на: комментарий от Virun

> Имхо было бы гораздо удобнее пользоваться стандартной и везде доступной функцией.

Я бы не против стандартной, везде доступной функции при работе с сокетами, которая бы бегала в kitchen block, делало мне эспрессо. Впрочем, в zlib такая функция тоже не помешала бы.

mv ★★★★★
()
Ответ на: комментарий от Virun

man 3 clock - кросплатформенная, но в линуксе показывает время работы текущего процесса/потока, а не реальное время. Юзай man 3 times, хоть он и погеморнее.

Joe_Bishop
()
Ответ на: комментарий от Joe_Bishop

times тоже про used ticks. Юзайте таймер.

mv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.