Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: QTcpSoket или как передать информацию через него  (Прочитано 929 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн S_F_H

  • Автор темы
  • Участник
  • *
  • Сообщений: 129
  • Да будет crossplatform!
    • Просмотр профиля
Всем доброго времени суток.

В учебнике нашел пример реализации приложения сетевого сервера и клиента на основе QTcpSocket и QTcpServer
Ниже даны несколько функций: 1-я отсылает данные с сервера клиенту, 2-я их принимает

Функция 1:
void MyServer::sendToClient(QTcpSocket* pSocket, const QString &str)
{
    QByteArray arrBlock;
    QDataStream out(&arrBlock, QIODevice::WriteOnly);
    out.setVersion(QDataStream::Qt_4_5);

    out << quint16(0) << QTime::currentTime() << str;
    out.device()->seek(0);
    out << quint16(arrBlock.size() - sizeof(quint16));
    pSocket->write(arrBlock);
}

2-я функция
void MyClient::slotReadyRead()
{
    QDataStream in(m_pTcpSocket);
    in.setVersion(QDataStream::Qt_4_7);
    for(;;)
    {
        if (!m_nNextBlockSize)
        {
            if (m_pTcpSocket->bytesAvailable() < sizeof(quint16))
            {
                break;
            }
            in >> m_nNextBlockSize;
        }
            if (m_pTcpSocket->bytesAvailable() < m_nNextBlockSize)
            {
                break;
            }
            QString str;
            QTime time;
            in >> time >> str;

            m_ptxtInfo->append(time.toString() + " " +str);//поле QTextEdit
            m_nNextBlockSize = 0;
    }

вопрос заключаеться в следующем. Имееться пользовательский класс
class OInfo
{
       QVector<quint32> data;
       QString name;
public:
       OInfo(QVector<quint32> d, QString n)
       {
             data = d;
             name = n;
       }
//и еще несколько функций для чтения полей
};

каким образом можно передать данным методом объект класс OInfo?

при попытке простой передачи в поток объекта класса, компилятор ругаеться, что нет мол перегруженных версий >>(<<) для данного класса...
информацию по перегрузке операторов >> << конкретно для QDataStream я не нашел...

Заранее благодарю.
« Последнее редактирование: 19 Мая 2011, 02:09:02 от S_F_H »

 

Страница сгенерирована за 0.095 секунд. Запросов: 26.