Цитата(mezmay @ 24.12.2012, 22:34)
Последний
break должен быть внутри последнего if'a.
Как-то так:
if (pSocket->bytesAvailable() < nextBlockSize)
{
qDebug()<<"fail";
qDebug()<<"bytesAvailable()"<<pSocket->bytesAvailable(); //bytesAvailable() 38
qDebug()<<"nextBlockSize"<<nextBlockSize; //nextBlockSize 51413
break;
}
А в твоем варианте до считывания строки просто никогда не дойдет, всегда будет срабатывать break
если все дебаги убрать, то следом идущая строчка выполниться, то есть если убрать дебаги и за условием будет break то все по идее должно работать. Это ладно.
Заключил я тело цикла в кавычки и теперь программа просто уходит в бесконечный цикл. Вот фунцкция отправки строки с сервера и ее вызов где то в конструкторе:
void MainWindow::sendToClientList(QTcpSocket *pSocket, const QString &str)
{
QByteArray arrBlock;
QDataStream out(&arrBlock, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_8);
qDebug()<<"str send"<<str;
out << quint16(0)<< str;
out.device()->seek(0);
out << quint16(arrBlock.size() - sizeof(quint16));
pSocket->write(arrBlock);
}
...
ui->setupUi(this);
sendToClientList(socket, "hello");
...
Цитата(iCast @ 24.12.2012, 22:53)
Цитата(mezmay @ 24.12.2012, 22:34)
Последний
break должен быть внутри последнего if'a.
Как-то так:
if (pSocket->bytesAvailable() < nextBlockSize)
{
qDebug()<<"fail";
qDebug()<<"bytesAvailable()"<<pSocket->bytesAvailable(); //bytesAvailable() 38
qDebug()<<"nextBlockSize"<<nextBlockSize; //nextBlockSize 51413
break;
}
А в твоем варианте до считывания строки просто никогда не дойдет, всегда будет срабатывать break
если все дебаги убрать, то следом идущая строчка выполниться, то есть если убрать дебаги и за условием будет break то все по идее должно работать. Это ладно.
Заключил я тело условия в кавычки и теперь программа просто уходит в бесконечный цикл. Вот фунцкция отправки строки с сервера и ее вызов где то в конструкторе:
void MainWindow::sendToClientList(QTcpSocket *pSocket, const QString &str)
{
QByteArray arrBlock;
QDataStream out(&arrBlock, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_8);
qDebug()<<"str send"<<str;
out << quint16(0)<< str;
out.device()->seek(0);
out << quint16(arrBlock.size() - sizeof(quint16));
pSocket->write(arrBlock);
}
...
ui->setupUi(this);
sendToClientList(socket, "hello");
...