![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Может быть тема не совсем понятная , но вопрос в следующем:
Имеется клиент-серверное приложение реализованное через idTCPClient и idTCPServer. Приложение сервер снимает изображение и звук с вебкамеры и передает его разными потоками клиенту (звук и изображение берутся разными компонентами). Программа клиент по таймеру сообщает программе серверу о необходимости отправки аудио или видеоданных (get_vid, get_aud). Программа сервер по execute отправляет данные по запросам. Таймер отправки аудиоданных -фиксирован. Таймер отправки видеоданных варьируется. Данные отправляются memoryStream'ами. В общем сущность проблемы: Когда видеотаймер устанавливается на низкий интервал (50-100мс) иногда получается так, что данные предназначенные для аудио попадают в видеобработчик, и наоборот. Я понимаю почему это происходит, но не понимаю как мне разделить их так, чтобы независимости от значения таймеров после команды клиента по отправке видоеданных, приходили только видеоданные, а после отправки клиентом команды получения аудио приходили только они. И никогда не нарушали бы этот порядок. Происходит примерно так: Код:
Клиент: WriteLn('Get_aud') readStream(aud_stream) Сервер: if ReadLn = 'Get_aud' then writeStream(Aud_stream) Тоже самое и по видео. Но иногда после команды клиента get_aud приходит кусок из vid_sream, соответственно вызывая всякие баги. ух... постарался изложить как мог понятнее... Подскажите пожалуйста, как сделать так, чтобы порядок выполнения команд не нарушался. Условия: должен использоваться только один порт. |