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

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

Быстрая передача данных по сети


L0N6 ©   (2003-12-17 17:35:00) 

Подскажите, какой код использовать ( хоть WinAPI, хоть ASM ) чтобы передача небольших объемов данных между приложениями в сети было минимальным. С использованием TClientSocket и TServerSocket получается медленно.


Digitman   (2003-12-18 14:20:00) [1]


> С использованием TClientSocket и TServerSocket получается
> медленно.


воозможно, это - из-за незнания особенностей тех или иных режимов работы компонентов


Fredericco   (2003-12-18 12:48:00) [2]

L0N6 (17.12.03 21:28) [3]
Бысрей можно, скорей тормоза возникают в программе.
>>100000 по 100 за ~45сек
Я так понимаю это 50000 туда (посылка) и 50000 обратно(ответ), правильно я понял?


Digitman   (2003-12-18 08:19:00) [3]


> L0N6


в сети Microsoft для этой цели гораздо эффективней будет использование именованых программных каналов (Named Pipes)


Eraszer   (2003-12-18 01:15:00) [4]

Если используешь локалку, как можно больше увелич все возможные буффера, как в самом приложении так и в системе.
Проверь, чтобы MTU (maximum transfer unit) был не менее 1500!


L0N6   (2003-12-17 21:28:00) [5]


> Конкретные цифры можешь привести?

1000 передач ( посылка - ответ ) по 100 байт за ~0.45 сек
10000 по 100 за ~4.2сек
10000 по 500 за ~5.1 сек
100000 по 100 за ~45сек
100000 по 500 за ~53сек
т. е. менее мегабайта в сек
сетка 100Mb, при передаче системный монитор показывает загрузку сети ~15%

> Может быстрей невозможно в принципе?

Может, действительно быстее нельзя?


antdrnc   (2003-12-17 18:16:00) [6]

TCP сокеты осуществляют буферизацию небольших блоков данных и
передают их все сразу когда буфер заполнен или истек интервал времени.
Буферизацию можно отключить.
Попробуй:
param: integer;
param:=1;
setsockopt(sock,IPPROTO_TCP,TCP_NODELAY,PChar(@param),sizeof(param));


Fredericco   (2003-12-17 17:56:00) [7]

Конкретные цифры можешь привести?
Почему ты решил что это медленно?
Может быстрей невозможно в принципе?


Наверх

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