Добрый вечер, возникла проблема следующего рода:
Имеется клиент и сервер, которые общаются с помощью сокетов, клиент отсылает сервер принмает, обрабатывает и сливает результаты назад клиенту. Получить от клиента к серверу блока данных проблемы нет, но возникает проблема при получении обратного ответа от сервера. Сервер пишет в сокет :
request->getSocket()->write(data);
На этот момент data != "", тут же на стороне клиента срабатывает слот:
connect(_sock,SIGNAL(readyRead()),this,SLOT(onReadyRead()));
Пытаюсь прочитать блок данных так:
void ClientWc::onReadyRead()
{
QTcpSocket *tcpSocket = (QTcpSocket*)sender();
QDataStream in(tcpSocket);
for (;;)
{
if (!m_nNextBlockSize)
{
if (tcpSocket->bytesAvailable() < sizeof(quint16))
break;
in >> m_nNextBlockSize;
}
if (tcpSocket->bytesAvailable() < m_nNextBlockSize)
break;
QByteArray receiveData;
in>>receiveData;
QByteArray key = _sockets.key(tcpSocket);
_sockets.remove(key);
delete tcpSocket;
emit received(key,receiveData);
m_nNextBlockSize = 0;
}
}
и обламываюсь на
if (tcpSocket->bytesAvailable() < m_nNextBlockSize)
Первое возвращает 1, по непонятным мне причинам, может кто подскажет с чем может быть связано?