Название: Вопрос по синхронной отправке данных с помощью QTcpSocket ! [РЕШЕНО] Отправлено: AntonUfo от Ноябрь 29, 2011, 15:23 Всем привет, имеется сервер и клиент, сервер шлет большие объемы данных клиенту, приняв пакет данных клиент должен его обработать (это, занимает время) и только потом сервер должен прислать клиенту новую порцию даных, т.е. между отправкой данных сервером должно проходить такое время что бы клиент отработав был готов принять новую порцию.
Как такое сделать ? Пока у меня получается только асинхронная передача, т.е. сервер постоянно отсылает данные в независимости от того может клиент их сейчас отработать или не может..... Заранее огромное спасибо ! Название: Re: Вопрос по синхронной отправке данных с помощью QTcpSocket ! Отправлено: Bepec от Ноябрь 29, 2011, 15:31 Сделать клиенту буфер приема как вариант.
Или же сделать протокол с сигналом готовности приема. Модель: Код: for(;stope;) Название: Re: Вопрос по синхронной отправке данных с помощью QTcpSocket ! Отправлено: AntonUfo от Ноябрь 29, 2011, 15:50 Сделать клиенту буфер приема как вариант. Или же сделать протокол с сигналом готовности приема. а можно ли использовать waitForReadyRead / waitForBytesWritten ? если можно, может быть есть примерчик ? Название: Re: Вопрос по синхронной отправке данных с помощью QTcpSocket ! Отправлено: Пантер от Ноябрь 29, 2011, 15:54 Сервер отправляет данные и ждет от клиента ответа о готовности к новым данным.
Название: Re: Вопрос по синхронной отправке данных с помощью QTcpSocket ! Отправлено: AntonUfo от Ноябрь 29, 2011, 16:29 Сервер отправляет данные и ждет от клиента ответа о готовности к новым данным. ну да вот об этом я и говорю нужно чтобы сервер отправлял данные клиенту и отправлял следующие только после ответа о готовности к приему от клиента.... киньте примерчик : :'( вот слот отправки на сервере Код: void MyThread::recievmessages( const QString &strmessage, const QString &arg ){ вот слот приема на клиенте: Код: void ClientRam::updateTcpWidget() но ЭТО работает асинхронно...., а мне нужно синхронно.... Название: Re: Вопрос по синхронной отправке данных с помощью QTcpSocket ! Отправлено: Bepec от Ноябрь 30, 2011, 06:59 эммм... наверно я чего то не понимаю.
Тебе уже сказали, я даже модель действий написал. Делаешь сигнал готовности клиента к приему данных. Который будет или опрашиваться сервером, или клиент сам будет сообщать о готовности приема. Все тебе уже рассказали, а ты еще чего то просишь? Название: Re: Вопрос по синхронной отправке данных с помощью QTcpSocket ! Отправлено: LisandreL от Ноябрь 30, 2011, 07:37 1) Буфер в QTcpSocket и так есть.
2) Метод recievmessages отправляющий (а вовсе не читающий) данные порвал мне все шаблоны. 3) Ну а так вам уже описали, что для синхронизации пакеты должны идти не в одну сторону (от сервера клиенту), а в обе, то есть клиент должен посылать серверу небольшие пакеты - запросы или подтверждения. Приблизиельная схема взаимодейтсвия (С=сервер, К=клиент). С подтверждениями: *Соединение установлено* C: Блок данных *Обработка* К: Данные обработанны C: Блок данных *Обработка* К: Данные обработанны C: Блок данных *Обработка* К: Данные обработанны C: Блок данных *Обработка* К: Данные обработанны C: Блок данных *Обработка* К: Данные обработанны *Данные кончились сервер молчит, пока не появятся новые* С запросами: *Соединение установлено* К: Дай мне данные C: Блок данных *Обработка* К: Дай мне данные C: Блок данных *Обработка* К: Дай мне данные C: Блок данных *Обработка* К: Дай мне данные C: Блок данных *Обработка* К: Дай мне данные C: Нет больше данных *Таймаут* К: Дай мне данные C: Нет больше данных *Таймаут* К: Дай мне данные C: Нет больше данных *Таймаут* Название: Re: Вопрос по синхронной отправке данных с помощью QTcpSocket ! Отправлено: AntonUfo от Ноябрь 30, 2011, 12:20 1) Буфер в QTcpSocket и так есть. 2) Метод recievmessages отправляющий (а вовсе не читающий) данные порвал мне все шаблоны. 3) Ну а так вам уже описали, что для синхронизации пакеты должны идти не в одну сторону (от сервера клиенту), а в обе, то есть клиент должен посылать серверу небольшие пакеты - запросы или подтверждения. спасибо, сделал синхронизацию через флаги и подтверждения.... а чем непонравился recievmessages ? Название: Re: Вопрос по синхронной отправке данных с помощью QTcpSocket ! Отправлено: Bepec от Ноябрь 30, 2011, 12:27 Переименуй тему в [РЕШЕНО] название темы.
А по поводу метода - привожу перевод. void MyThread::recievmessages функция МойПоток::получать Сообщение() Название: Re: Вопрос по синхронной отправке данных с помощью QTcpSocket ! Отправлено: AntonUfo от Ноябрь 30, 2011, 13:00 Переименуй тему в [РЕШЕНО] название темы. А по поводу метода - привожу перевод. void MyThread::recievmessages функция МойПоток::получать Сообщение() я с англ. не в ладах... :) но меня все равно не покидает ощущение что я получил велосипед и синхронную передачу можно сделать как то более логично ... Название: Re: Вопрос по синхронной отправке данных с помощью QTcpSocket ! [РЕШЕНО] Отправлено: Bepec от Ноябрь 30, 2011, 13:20 Поверь, сигнал-ответ это синхронная передача, еще начиная с мезозойского периода :)
|