ПрограммированиеФорумСеть

Задержки прихода UDP-пакетов

#0
13:57, 1 сен 2011

При увеличении нагрузки на графику и расчеты, 
постепенно сильно выросли задержки получения сообщений о приходе UDP-пакетов.
Иногда и по полминуты приходится ждать отклика на отправленный с другого компа пакет.
Причем пакеты не теряются, а где-то скапливаются и потом все-равно доходят.

Главный цикл выглядит примерно так (на делфе):

 while msg.message <> WM_QUIT do
  if PeekMessage( msg, 0, 0, 0, PM_REMOVE ) then
  begin
    TranslateMessage( msg );
    DispatchMessage( msg );
  end
  else
  begin
    Controller.AllUpdate; // Если в очереди нет сообщений - формируем кадр
  end;

Т.е. сообщения в самой очереди почему-то появляются с огромной задержкой.
Причем эти сетевые глюки мало зависят от производительности компа.
(тормоза проявляются и при большом FPS)
В чем может быть причина?

#1
17:11, 1 сен 2011

DoS?

#2
18:13, 1 сен 2011

bee buster
Самые большие тормоза проявились на 7-ке

Дополнение:
Сделал перерисовку кадра по таймеру (а не по OnIdle - как показано выше).
Если FPS не падает ниже частоты срабатывания таймера,
то и сетевые пакеты приходят без задержек.
Почему же такая схема как в первом посте вызывает затык сообщений?

#3
19:48, 1 сен 2011

>if PeekMessage
попробуй while PeekMessage

ПрограммированиеФорумСеть

Тема в архиве.