|
NO TRANSLATION AVAILABLE
Среди моих программ появилась небольшая утилита для определения скорости передачи данных по сети: netspeed. Опубликованы исходные тексты и сборки для MS WIndows1, Ubuntu Linux 9.102 для 32 и 64-битных систем, а также Maemo5 (Nokia N900).
Это уже третья подобная программа . Исходные коды двух предыдущих были потеряны при различных обстоятельствах. То есть, скорее всего, они валяются где-то в архивах, но я решил, что написать новую программу будет быстрее и лучше, чем найти старые. Программа работает в терминале, сервер принимает данные по TCP, а клиент - отправляет с максимально возможной скоростью. По окончании передачи сообщается, сколько данных передано/принято, за какое время, и какая из этого следует скорость. Каждая программа обрабатывает только один поток данных. Можно изменять номер порта, размер блока, количество передаваемых блоков и задать печать скорости приёма/передачи с интервалом в несколько блоков.
В целях упрощения программа не ждёт окончания передачи последнего блока, поэтому при больших блоках и медленных каналах погрешность может быть заметной. Информация на стороне сервера более точна.
Клиент передаёт один и тот же буфер, равный размеру блока, заполненный случайными данными до подключением к серверу. Сервер принимает блоки в один и тот же буфер, который между приёмами никак не обрабатывается. Таким образом минимизируется влияние дисковой подсистемы и шифровки/сжатия в сетевом оборудовании.
Программа без параметров, с неверными параметрами или с ключом -h выдаёт список параметров (на "моём" английском). Другие параметры:
- IPv4 адрес компьютера, на котором запущен сервер. -s - запуск программы в режиме сервера. Обязательно должен быть указан параметр -s или , но не оба сразу.
-p - номер порта, к которому подключается программа или на котором она принимает соединения в режиме сервера. Может принимать значения от 1 до 65535. По умолчанию - 21635. -b [k|m|g] - размер блока, передаваемого/принимаемого программой за один раз. Целое положительное число. Может оканчиваться буквой k,m,g (кило-, мега- и гигабайт3 соответственно). Один буфер такого размера будет размещён в памяти, поэтому он не должен быть слишком большим. Если не указано - 4k. -c [k|m|g] - число блоков, которое будет передано программой. Должно быть целым и положительным. Не используется, если программа принимает данные. По умолчанию - 256k, то есть всего передаётся 1 гигабайт. -t [k|m|g] - количество блоков, после передачи/приёма которых выводится текущая статистика. Объём и время в статистике накапливаются, но скорость относится только к последней порции. Должно быть целым и неотрицательным. Если не указано или равно 0, выводятся только общие данные.
1. Для работы требуется система cygwin, достаточно одного модуля cygwin1.dll, который можно загрузить со страницы файлов программы netspeed и положить в одну папку с файлом netspeed.exe.
2. Возможно, что будет работать и в других версиях Ubuntu и не только.
3. Здесь и в большинстве других мест на этом сайте 1 килобайт считается равным 1024 байт, 1 мегабайт - 1024 килобайт и т.д., а "слово" равно разрядности процессора. |