crossplatform.ru

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

> Получение данных на сервере?
V7T
  опции профиля:
сообщение 21.10.2011, 16:08
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 11.10.2011
Пользователь №: 2939

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




Репутация:   0  


Здравствуйте, пишу клиент/серверное приложение, я использую FortuneClient и ThreadedFortuneServer из SDK QT.

Все бы ничего, но ни как не могу понять (это первое мое приложение в QT и собственно в линуксе), принцип получения данных на сервере.
В самих примерах все достаточно просто, но там данные отправляются клиенту, который их принимает, перед этим отправив запрос.

Собственно вот часть кода клиента:
void Client::requestNewFortune()
{
    //getFortuneButton->setEnabled(false);
    blockSize = 0;
    tcpSocket->abort();

    tcpSocket->connectToHost(hostLineEdit->text(),
                             portLineEdit->text().toInt());

    QPixmap screenshot = QPixmap::grabWindow(QApplication::desktop()->winId());
    QByteArray foto;
    QBuffer buffer(&foto);
    buffer.open(QIODevice::WriteOnly);
    screenshot.save(&buffer,"jpg");

    QByteArray block;
    QDataStream out(&block, QIODevice::WriteOnly);
    out.setVersion(QDataStream::Qt_4_0);
    out << (quint16)0;
    out<<buffer.data();//отправяем данные скриншота
    out.device()->seek(0);
    out << (quint16)(block.size() - sizeof(quint16));

    qDebug()<<"Size of buffer: "<<buffer.size();//число...
    qDebug()<<"Size of block: "<<block.size();//число...
    
    qDebug()<< tcpSocket->write(block);

    tcpSocket->disconnectFromHost();
    tcpSocket->waitForDisconnected();



часть кода сервера:
void FortuneThread::run()
{
    QTcpSocket tcpSocket;
    if (!tcpSocket.setSocketDescriptor(socketDescriptor))//работаем с дескриптором
    {
        emit error(tcpSocket.error());
        return;
    }


    QDataStream in(&tcpSocket);//здесь без взятия адреса ругается
    in.setVersion(QDataStream::Qt_4_0);

    QByteArray buffer;
    in >> buffer;

    qDebug()<<buffer.size();
    qDebug()<<tcpSocket.bytesAvailable();

    tcpSocket.disconnectFromHost();
    //tcpSocket.waitForDisconnected();
}


В коде сервера явно не все впорядке (возможно и клиенте) :) , и Вас уважаемые гуру наверно :bad: .

Правильно ли данные отправляются?
Может стоит создать connect(сокет,сигнал(readyRead()),...,slot(..)), впринципе, что я только не делал, все одно - ничего)).
Не первый день пытаюсь разобраться, окончательно запутался.

Подскажите, пожалуйста.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 9.11.2024, 15:09