URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 4594
[ Назад ]

Исходное сообщение
"Отправка данных клиентам"

Отправлено SnugForce , 27-Авг-05 17:59 
Вопрос такой. Как отправлять данные клиентам при использовании не блок сокетов в случае чата и файловой передачи. Т.е. в потоках, в одном потоке чередуя сокеты в send или еще как? Так же тут встает вопрос о разной скорости. Заранее спасибо!

Содержание

Сообщения в этом обсуждении
"Отправка данных клиентам"
Отправлено DeadMustdie , 28-Авг-05 09:56 
>Вопрос такой. Как отправлять данные клиентам при
>использовании не блок сокетов в случае чата и файловой передачи.
>Т.е. в потоках, в одном потоке чередуя сокеты в send или еще как?
>Так же тут встает вопрос о разной скорости. Заранее спасибо!

Штатный способ TCP/IP - multicast, либо на TCP, либо на UDP.
Тогда нету блока сокетов, а есть схема provider - consumer.

С такой схемой могут быть проблемы в большой маршрутизируемой
сети (не через любой маршрутизатор multicast-трафик проползёт),
поэтому можно организовать схему с пулом данных на отправку для
каждого соединения, пулом потоков исполнения (другого размера,
нежели число соединений) и алгоритмом назначения на свободные
потоки заданий по отправке данных.

Более изящная схема получится при использовании неблокируемых
сокетных операций. Тогда можно вообще одним потоком обойтись
при не слишком высокой интенсивности обмена.