С сервера посылается сообщение:
QString str;
QByteArray block;
...
block.append(str);
write(block);
QByteArray Str;
Str=tcpSocket.readAll();
Еще не успели дойти.
Ну так в примерах же посмотреть.
Единственное толковое решение это добавлять к сообщению его длину. Если клиент получил не все данные, то ждет, пока сервер пришлет еще.
Вот классический пример:
QDataStream in(tcpSocket);
in.setVersion(QDataStream::Qt_4_0);
if (blockSize == 0) {
if (tcpSocket->bytesAvailable() < (int)sizeof(quint16))
return;
in >> blockSize;
}
if (tcpSocket->bytesAvailable() < blockSize)
return;
QString nextFortune;
in >> nextFortune;
if (nextFortune == currentFortune) {
QTimer::singleShot(0, this, SLOT(requestNewFortune()));
return;
}
currentFortune = nextFortune;
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)