crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> Теряются данные в сокете
mezmay
  опции профиля:
сообщение 25.12.2012, 16:37
Сообщение #11


Активный участник
***

Группа: Участник
Сообщений: 272
Регистрация: 13.7.2009
Из: Ростов-на-Дону
Пользователь №: 904

Спасибо сказали: 16 раз(а)




Репутация:   1  


1. Зачем все время разный код пишешь? Последний вариант нормальный.
2. Проверь значение quint16(arrBlock.size() - sizeof(quint16)); перед записью
3. Проверь что перед циклом nextBlockSize проинициализирован нулем

Сообщение отредактировал mezmay - 25.12.2012, 16:39
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iCast
  опции профиля:
сообщение 25.12.2012, 18:29
Сообщение #12


Студент
*

Группа: Участник
Сообщений: 22
Регистрация: 22.9.2012
Пользователь №: 3527

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(mezmay @ 25.12.2012, 17:37) *
1. Зачем все время разный код пишешь? Последний вариант нормальный.
2. Проверь значение quint16(arrBlock.size() - sizeof(quint16)); перед записью
3. Проверь что перед циклом nextBlockSize проинициализирован нулем


Спасибо :) nextBlockSize=0 помогло:)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iCast
  опции профиля:
сообщение 26.12.2012, 12:38
Сообщение #13


Студент
*

Группа: Участник
Сообщений: 22
Регистрация: 22.9.2012
Пользователь №: 3527

Спасибо сказали: 0 раз(а)




Репутация:   0  


опять проблемы, почему то теперь данные вообще не прияходят от сервера к клиенту.
Сервер.(отправляет список)
void MainWindow::sendToClientList(QTcpSocket *pSocket, const QStringList &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));
        //qDebug()<<quint16(arrBlock.size() - sizeof(quint16));

        pSocket->write(arrBlock);
        pSocket->flush();
}

Клиент.(принимает список)
void CuteNotes::slotReadyRead()
{
     nextBlockSize =0;
    qDebug()<<"slot ready read activated"; //слот вызывается
    QDataStream in(pSocket);  
    in.setVersion(QDataStream::Qt_4_8);
    forever  
    {
              if ( ! nextBlockSize)  
        {
             if (pSocket->bytesAvailable() < sizeof(quint16))
           break;
        
          in >> nextBlockSize;
          
         }    
              if (pSocket->bytesAvailable() < nextBlockSize)
        break;
      
     QString str;
     in >> str;  
     qDebug()<<"Str";
     qDebug()<<str;
     nextBlockSize = 0;
    }
}


никак не пойму, что не так делаю.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iCast
  опции профиля:
сообщение 26.12.2012, 21:50
Сообщение #14


Студент
*

Группа: Участник
Сообщений: 22
Регистрация: 22.9.2012
Пользователь №: 3527

Спасибо сказали: 0 раз(а)




Репутация:   0  


nextBlockSize =0;
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V  < 1 2
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 19:29