Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Задержка при отправке данных. Indy. [D7, WinXP]


Bruce ©   (2005-11-08 22:40:00) 

Есть следующий код, находящийся в OnExecute компонента TIdTCPServer.

...
         AContext.Connection.IOHandler.WriteBufferOpen;
         AContext.Connection.IOHandler.Write(integer(iSize));
         AContext.Connection.IOHandler.Write(msvclSend,
           ms.Size, false);
         AContext.Connection.IOHandler.WriteBufferClose;
...

так вот если размер потока msvclSend небольшой - примерно 100-500 байт, то данные приходят на клиент примерно через 100-500 милисекунд, т.е. наблюдается  задержка.
Если же размер msvclSend > 1500 байт, то данные приходят мгновенно.
Подозреваю, что это связано с тем, что MTU для eathenet = 1500 байт и система ждёт пока буффер наполниться, если не наполняется в течении определённого времени, то отправляет.
Можно ли как то форсировать отправку пакетов, может какая API есть?
Или единственный способ - прибавлять "баласт" при отправке данных?

Спасибо.


Eraser   (2005-11-09 00:47:00) [1]


> Bruce   (08.11.05 22:40)

UseNagle := false;


Наверх

Титульная страница Поиск, карта сайта Написать письмо