Форум вопросов и ответов

Форум вопросов и ответов (https://www.otvetnemail.ru/)
-   Продолжение старого архива (https://www.otvetnemail.ru/prodolzhenie-starogo-arhiva-804/)
-   -   Чтение с сокета без QDataStream (https://www.otvetnemail.ru/prodolzhenie-starogo-arhiva-804/chtenie-s-soketa-bez-qdatastream-354951/)

Guest 30.09.2011 17:46

Чтение с сокета без QDataStream
 
Как читать с сокета данные без 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; } }...}


Часовой пояс GMT, время: 14:02.


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