Ответ
 
Опции вопроса Поиск в этом вопросе Опции просмотра
  #1  
Старый 30.09.2011, 17:46
Аватар для Guest
Guest
Вопрос
Сообщений: n/a
По умолчанию

Как читать с сокета данные без QDataStream (который используется во всех примерах).Есть сервер (написан на нативных сокетах под QNX), пишу клиент под Win/Lin под Qt.Нужно получать с сервера пакеты (пакеты могут иметь разную длину).Пакет представляет из себя несколько массивов собранных в кучу друг за другом (типы quin32, структуры и т.п.).при сигнале readyRead() получаю только часть данных (меньше чем нужно в bytesAvailable()).при socket->read() я так понимаю внутренний буфер очищается на колчиество считанных байт.Как грамотно реализовать чтение?я пока делаю так:Код:void QClient::readyRead(){ int readBytes = fsocket->bytesAvailable(); if(readBytesread((char*)frawBuffer,sizeo f(scb_msg_t)); if(fframeBuffer.msg_head->size) { freadBytes = 0; while((readBytes = fsocket->bytesAvailable())!=0) { fsocket->read((char*)frawBuffer[freadBytes],readBytes); freadBytes+=readBytes; } }...}
Ответить с цитированием
Ответ



Похожие вопросы
Тема Автор Раздел Ответов Последний вопрос или ответ
QDataStream - непонятно Guest Продолжение старого архива 0 30.09.2011 21:06
Чтение из сокета Guest Продолжение старого архива 0 30.09.2011 17:42
Вопрос по QDataStream Guest Новые вопросы и ответы 4 0 28.09.2011 16:34
QMap в QDataStream Guest Третий архив вопросов и ответов 0 28.09.2011 15:02
Как очистить QDataStream [Решено] Guest Продолжение архива вопросов 0 28.09.2011 14:31



© www.otvetnemail.ru - Форум вопросов и ответов.