![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Быстрая передача данных по сети
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]
Конкретные цифры можешь привести?
Почему ты решил что это медленно?
Может быстрей невозможно в принципе?