как контролировать скорость сокета? - PullRequest
0 голосов
/ 11 ноября 2010

Я хочу знать, как я могу контролировать скорость моего сетевого интерфейса. На самом деле я хочу получать со скоростью 32 Кбит / с и отправлять полученные данные в сеть со скоростью 1 Мбит / с. ... есть ли у вас идеи о том, как контролировать скорость интерфейса? .... или вы знаете какие-нибудь хитрости, которые могут помочь? ...

Заранее спасибо ..

Ответы [ 3 ]

1 голос
/ 11 ноября 2010

Существует разница между скоростью передачи данных и скоростью соединения.Как правило, вы хотите, чтобы скорость передачи данных была максимально быстрой (без ошибок, конечно).Некоторые низкоуровневые драйверы или ОС могут позволить вам управлять этим, но это принципиально низкоуровневая проблема с оборудованием / драйверами.

Для скорости передачи данных регулировка отправки проста, просто не вызывайте send () настолько быстро.Для этого необходимо отслеживать, сколько вы отправляете за период времени, и ограничивать его сном.

Прием может работать так же, но вы должны учитывать, что если кто-то отправляет быстрее, чем скорость, которую вы получаете,могут быть проблемы.

0 голосов
/ 11 ноября 2010

Я сделал этот «трудный путь» (не знаю, есть ли более простой способ).В частности, я сделал это, контролируя скорость, с которой я вызывал send () и / или recv (), и количество данных, которые я указывал, которые я хотел отправить / получить при каждом из этих вызовов.Чтобы сделать это правильно, нужно немного математики, но это не невозможно.

0 голосов
/ 11 ноября 2010

Вы можете сделать это, вы должны только контролировать время и не превышать 32 и более кбит (вы можете установить это в аргументах функции) во второй и той же практике при отправке.

...