crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Ожидание чтения и сокращение загрузки процессора.
dasV
  опции профиля:
сообщение 13.3.2009, 17:47
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 19
Регистрация: 2.2.2009
Пользователь №: 522

Спасибо сказали: 0 раз(а)




Репутация:   0  


Добрый день уважаемые. Я новичок в qt да и в c++ поэтому бейте меня и посылайте на RTFM.


Есть Вот такой код

QString M_class::ReadSocket()
{
    QTime TimeOut;
    TimeOut.start();
    while(!socket.waitForReadyRead())
        {    
            QCoreApplication::processEvents();
            if(TimeOut.elapsed()>=6000)
            {
                return(0);
            }
        }
    return(socket.readAll());
}


Так вот он создает нагрузку на процессор, а если ожидание затягивается, то и вовсе становится неприятно что я такой вот пожиратель тактов.

Можно ли справить ситуацию?? Сразу оговорюсь что программа консольная и в ней нет Q_OBJECT с вызовом QTimer::timeout ()

Да еще вопрос, к месту ли тут QCoreApplication::processEvents()???

С уважением
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
dasV
  опции профиля:
сообщение 14.3.2009, 20:01
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 19
Регистрация: 2.2.2009
Пользователь №: 522

Спасибо сказали: 0 раз(а)




Репутация:   0  


Задача такова, я должен послать на сервер запрос авторизации, сервер мне ответит (тут я должен распарсить что он мне ответил) если это нормальный ответ, я посылаю запрос на выдачу мне нужной информации, при этом сервер мне отвечает xml строкой где я ищу нужные мне строки, вывожу на экран и опять посылаю запрос на закрытие соединения, опять ответ опять корректно закрыли или нет. Это простейший случай который реализован без Q_OBJECT шаг за шагом.

В результате я не могу понять ну вот я в конструкторе или в другом месте создал
QObject::connect(&socket, SIGNAL(encrypted()),this, SLOT(socketEncrypted()));
QObject::connect(&socket, SIGNAL(readyRead()),this, SLOT(socketReadyRead()));
    
set_encrypted_connect(); //socket.connectToHostEncrypted(ssl_host,ssl_port);


В результате после соединения с хостом я вызову
socket.write(get.toUtf8()+ "\r\n"); //тут get="GET что то там ";


А после будет получен сигнал readyRead() который вызовет слот socketReadyRead() в результате будет прочитана строка socket.readAll() “Я получаю ответ от сервера и допустим …ура!!! Все хорошо!!” а дальше что?? Как мне указать программе, что пора получать данные, после чего закрыть соединение??
Ну допустим я после чтения в функии socketReadyRead опять сделаю запрос

socket.write(get.toUtf8()+ "\r\n");

Но после этого опять будет вызван socketReadyRead() и так по кругу… вот тут меня и клинит!!!


Может книгу порекомендуете ?? С удовольствием почитаю =)

С уважением
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- dasV   Ожидание чтения и сокращение загрузки процессора.   13.3.2009, 17:47
- - kwisp   dasV, что мешает включить в конольную прогу Q_OBJ...   13.3.2009, 17:52
- - Litkevich Yuriy   dasV, цыклы лучше в отдельный поток помещать у них...   13.3.2009, 17:56
- - LE0N   virtual bool waitForReadyRead ( int msecs = 30000 ...   13.3.2009, 17:56
- - dasV   Хм, написал вот что QString Sms_class::R...   13.3.2009, 19:24
- - LE0N   QString QIODevice::errorString () const ? Кто долж...   13.3.2009, 19:51
|- - AD   Цитата(LE0N @ 13.3.2009, 19:51) QString Q...   27.3.2009, 9:48
- - Litkevich Yuriy   Цитата(dasV @ 13.3.2009, 22:24) if(tmp.is...   13.3.2009, 20:24
- - kwisp   Цитата(Litkevich Yuriy @ 13.3.2009, 17:56...   13.3.2009, 20:25
- - Litkevich Yuriy   Цитата(kwisp @ 13.3.2009, 23:24) должно п...   13.3.2009, 20:26
- - LE0N   Цитатапеременная tmp какого типа? Очевидно же - Q...   13.3.2009, 20:33
- - dasV   А я и не говорил что нельзя, мне просто неудобно, ...   13.3.2009, 22:16
- - kwisp   dasV, с этого надо было начинать. давай задачу по...   13.3.2009, 22:27
- - Litkevich Yuriy   Цитата(dasV @ 14.3.2009, 1:16) А в консол...   13.3.2009, 22:32
- - dasV   Задача такова, я должен послать на сервер запрос а...   14.3.2009, 20:01
- - kwisp   dasV, существует такой метод или "агрегат...   14.3.2009, 20:27
- - dasV   2_ kwisp Спасибо, буду думать, а это не оно ли слу...   14.3.2009, 20:54
- - kwisp   Цитата(dasV @ 14.3.2009, 20:54) а это не ...   15.3.2009, 9:16
- - dasV   Доброго времени суток уважаемые. Сделал как и сказ...   26.3.2009, 19:33
|- - igor_bogomolov   Может я уже немного не в тему и не вовремя, но я б...   26.3.2009, 23:51
- - igor_bogomolov   Дополнительно(конкретно по вопроссу) Цитата(dasV ...   27.3.2009, 0:44
|- - igor_bogomolov   И еще. Сигнал readyRead () испускается каждый раз,...   27.3.2009, 1:18
- - Litkevich Yuriy   Цитата(igor_bogomolov @ 27.3.2009, 2:51) ...   27.3.2009, 1:45
- - igor_bogomolov   Litkevich Yuriy Спасибо. С раскрывающимся текстом ...   27.3.2009, 3:33
- - Litkevich Yuriy   Цитата(igor_bogomolov @ 27.3.2009, 6:33) ...   27.3.2009, 4:27
- - LE0N   ЦитатаLEON, уважай собеседника и будь вежлив. Все ...   27.3.2009, 12:49
- - dasV   Всем спасибо за ответы. Сделал socket.flush (); од...   27.3.2009, 19:45
|- - BRE   Цитата(dasV @ 27.3.2009, 19:45) Хотел бы ...   27.3.2009, 20:27
- - LE0N   ЦитатаТак же подумал, что мол не все прочитали и п...   27.3.2009, 23:24
- - igor_bogomolov   Цитата(dasV @ 27.3.2009, 19:45) Хотел бы ...   28.3.2009, 1:29
- - LE0N   ЦитатаА когда тогда не рано? Если никуда не лездь,...   28.3.2009, 10:39
- - dasV   Добрый день уважаемые, только что вернулся из анаб...   6.4.2009, 11:43
- - igor_bogomolov   У вас хоть какой-то протокол общения с сервером ес...   6.4.2009, 12:19
- - dasV   Добрый день. Протокол общения обычный http, я зна...   6.4.2009, 12:44
|- - Sokoloff   Цитата(dasV @ 6.4.2009, 13:44) Добрый ден...   6.4.2009, 18:09
- - igor_bogomolov   Цитата(dasV @ 6.4.2009, 13:44) я знаю, ск...   6.4.2009, 12:57
- - dasV   Да я действительно не очень…ммм, не очень корректн...   6.4.2009, 13:25
- - Litkevich Yuriy   Цитата(dasV @ 6.4.2009, 17:25) Я к сожале...   6.4.2009, 13:29
|- - trdm   Цитата(Litkevich Yuriy @ 6.4.2009, 14:29)...   6.4.2009, 14:59
- - igor_bogomolov   Приложите еще хотябы код метода в котором вы считы...   6.4.2009, 15:53
- - dasV   То же самое, к сожалению, результат вывода примерн...   6.4.2009, 16:34
- - dasV   Похоже, что так оно и есть, после получения данных...   7.4.2009, 18:36


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 1.12.2024, 22:08