Russian Qt Forum
Ноябрь 22, 2024, 13:41 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSocket и очень много данных  (Прочитано 8076 раз)
Sir_J
Гость
« : Август 12, 2005, 15:32 »

Как в Qt правильно прочитать данные и сокета.
если их очень много ?
У нас есть сервер на который мы телнетимся(telnet localhost port), и он сразу отдаем много данных (около 500Kb).

Если использовать такой код
Код:

while ( socket->canReadLine() ) {
xml += socket->readLine();    
}

то мы читаем только 1024 символа и все Грустный
Если использовать такой код
Код:

while ( socket->canReadLine() ) {
xml += socket->readLine();    
socket->waitForMore(-1);
}
   
то читаем ~ 130 Kb а дальше все финиш Грустный

Как же правильно прочитать много данных ?
Читать порциями (как ?)
Очищать буфер перед приемом новых данных  (как?)
Если можно приведите кусочек рабочего кода
Спасибо.
Записан
Sergeich
Гость
« Ответ #1 : Август 12, 2005, 15:58 »

Все зависит от того как ты хочешь работать с сокетом - синхронно или асинхронно, и от признака конца сообщения ( если он вообще есть )
Записан
DenKor
Гость
« Ответ #2 : Август 12, 2005, 15:58 »

Если я не ошибаюсь, то надо использовать функцию чтения данных в качестве слота, а не вызывать непосредственно.
Записан
west
Гость
« Ответ #3 : Август 12, 2005, 17:43 »

По-моему, надо читать до тех пор, пока socket->bytesAvialble()...
Записан
Sir_J
Гость
« Ответ #4 : Август 13, 2005, 13:42 »

Всем спасибо
проблема решена

Я просто для того чтобы проверить все ли данные пришли
пытался вывести их qWarning ом у которого внутренний буфер ограничен
Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 21.