Поиск:

Ответ в темуСоздание новой темы Создание опроса
> пересылка данных по сети [Qt] 
:(
    Опции темы
ss
Дата 21.10.2014, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 17.5.2007

Репутация: нет
Всего: нет



Здравствуйте. Есть клиент и сервер TCP (взял из http://qt-doc.ru/realizacia-servera-s-pomo...tcpserver.html). Хочу переслать ,по мимо, даты и строки еще и рисунок (есть пример http://www.cyberforum.ru/qt/thread748279.html сообщение 29.12.2012, 21:13). В клиенте загружаем рисунок из файла, передаем серверу и сервер сохраняет на диск в файл.
В готов примере клиент отсылает дату и строку. Сервер получает эти данные выводит себе на форму формирует ответ дата + строка и отсылает клиенту. Сам пример работает нормально. Рисунок не сохраняется (может даже и не передается). Когда я добавляю код пересылки рисунка то первый раз происходит обмен данными между клиентом и сервером нормально а второй раз уже клиент ничего не получает от сервера.


клиент

Код

  QPixmap*    m_pViewScreen;
//quint32     m_nNextBlockSize;  описано в классе

void MyClient::slotSendToServer()
{
 //m_pViewScreen - загружается в конструкторе клиента

    QByteArray  arrBlock;
    QDataStream out(&arrBlock, QIODevice::WriteOnly);

    QBuffer buffer;
    QImageWriter writer(&buffer, "png");


    out.setVersion(QDataStream::Qt_4_7);

    writer.write(m_pViewScreen->toImage());

    out << quint32(0) << QTime::currentTime() << m_ptxtInput->text() <<(quint32)buffer.size() <<buffer.data();

    out.device()->seek(0);
    out << quint32(arrBlock.size()  - sizeof(quint32));

    m_pTcpSocket->write(arrBlock);
    m_ptxtInput->setText("");
}


сервер

Код

 QImage* m_pViewScreen;
//quint32     m_nNextBlockSize;  описано в классе

void MyServer::slotReadClient()
{
    qDebug()<<"read from client";
    QTcpSocket* pClientSocket = (QTcpSocket*)sender();
    QDataStream in(pClientSocket);
    in.setVersion(QDataStream::Qt_4_7);
    for (;;) {
        if (!m_nNextBlockSize) {
            if (pClientSocket->bytesAvailable() < sizeof(quint32)) {
                break;
            }
            in >> m_nNextBlockSize;
        }

        if (pClientSocket->bytesAvailable() < m_nNextBlockSize) {
            break;
        }
        QTime   time;
        QString str;

        qint32 nSizeImage;
        QByteArray barr;

        in >> time >> str >> nSizeImage;// >> barr;

        barr = pClientSocket->read(nSizeImage);

        QBuffer buffer(&barr);

        QImageReader reader(&buffer, "png");
        *m_pViewScreen = reader.read();


        QString strMessage = 
            time.toString() + " " + "Client has sent - " + str;
        m_ptxt->append(strMessage);

        m_nNextBlockSize = 0;

        sendToClient(pClientSocket, 
                     "Server Response: Received \"" + str + "\""
                    );
    }

    m_pViewScreen->save("d:/q/primer.png","png");
}





Это сообщение отредактировал(а) ss - 21.10.2014, 21:25

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  temp_qt.rar 17,31 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0746 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.