16 миллисекундное квантование при отправке / получении пакетов TCP - PullRequest
2 голосов
/ 22 мая 2010

У меня есть приложение C ++, работающее в системе Windows XP 32, отправляющее и получающее короткие tcp / ip-пакеты.

Измеряя (точно) время прибытия, я вижу квантование времени прибытия в 16 миллисекундных единиц времени.(Это означает, что все поступающие пакеты отделены друг от друга (16) xN миллисекунд)

Чтобы избежать агрегирования пакетов, я попытался отключить алгоритм NAGLE, установив для параметра IPPROTO_TCP значение TCP_NODELAY в переменных сокета, но это не помогло

Я подозреваю, что проблема связана с расписанием окон, которое также имеет 16-миллисекундные часы. Есть идеи решения этой проблемы?Спасибо

1 Ответ

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

Используйте таймер с более высоким разрешением, такой как QueryPerformanceTimer () или __rdtsc () , осознавая их падения .

Аналогичным образом, обратите внимание, что если вы используете функции ожидания, вы можете вызвать timeBeginPeriod () для разрешения 1 мс или даже реализовать функцию задержки занятости, обернутую вокруг таймера с более высоким разрешением.

...