Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие _ Как сделать удаленную отладочную консоль?

Автор: reeshkov 18.9.2015, 10:28

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

#include <QCoreApplication>
#include <QDebug>
#include <QDateTime>
#include <QTimer>


//#define REMOTE

QTextStream *out;

void logOutput(QtMsgType type, const char *msg)
{
    QString debugdate = QDateTime::currentDateTime().toString("yyyy.MM.dd hh:mm:ss.zzz");
    *out << debugdate << " " << type << msg << endl;
}

int main(int argc, char *argv[])
{
    int i;
    QCoreApplication a(argc, argv);
#ifndef REMOTE
    QTextStream console(stdout);
#else
    QIODevice *remote = new MyDevice();
    QTextStream console(remote);

#endif
    out = &console;

    qInstallMsgHandler(logOutput);
    for(i=0;i<10;i++){
        qDebug() << i;
    }

//    QTimer *timer = new QTimer();
//    a.connect(timer, SIGNAL(timeout()), &a, SLOT(quit()));
//    timer->start(1000);

    a.exec();
    return 0;
}

Помогите написать класс "MyDevice", он должен запускаться в отдельном потоке чтоб не блокировалась работа основоного приложения, ждать соединения на TCP порту, если соединение существует то закрывать старое, и в сокет соединеия, если оно существует писать отладочный вывод.

Автор: terrible 4.10.2015, 13:44

А в чем проблема, почитай как работать с потоками (QThread) и дерзай!

Автор: reeshkov 6.10.2015, 12:48

Проблема была в том что непонятно было как сделать так чтоб с ТСР сервером и соотв сокетом можно было работать как с IODevice. Оказалось что надо унаследовать QIODevice, определить нужные виртуальные методы и запустить все это дело в потоке.

Автор: terrible 6.10.2015, 12:54

Извини, не сразу тебя понял.

Так QTcpSocket производен от QAbstractSocket, который производен от QIODevice.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)