#include #include #include #include #include #include "logreceiver.h" #include #include #include "status.h" LogReceiver::LogReceiver(QWidget *parent) : QDialog(parent) { ui.setupUi(this); statusLabel = new QLabel; quitButton = new QPushButton(tr("Quit")); quitButton->setAutoDefault(false); server = new QLocalServer(this); if (!server->listen("/var/tmp/qt_c_socket_test")) { QMessageBox::critical(this, tr("LogReceiver"), tr( "Unable to start the server: %1.") .arg(server->errorString())); close(); return; } statusLabel->setText(tr("The server is running.\n" "Run the C Client example now.")); connect(quitButton, SIGNAL(clicked()), this, SLOT(close())); connect(server, SIGNAL(newConnection()), this, SLOT(handleNewConnection())); QHBoxLayout *buttonLayout = new QHBoxLayout; buttonLayout->addStretch(1); buttonLayout->addWidget(quitButton); buttonLayout->addStretch(1); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(statusLabel); mainLayout->addLayout(buttonLayout); setLayout(mainLayout); setWindowTitle(tr("Fortune Server")); } LogReceiver::~LogReceiver() { } void LogReceiver::handleNewConnection() { qDebug() << "New Connection arrived"; clientSocket = server->nextPendingConnection(); connect(clientSocket, SIGNAL(disconnected()), clientSocket, SLOT(deleteLater())); connect(clientSocket, SIGNAL(readyRead()), this, SLOT(handleNewInput())); } void LogReceiver::handleNewInput() { QByteArray data = clientSocket->readAll(); char * cdata = new char[data.size() +1]; qDebug() << data.size(); qDebug() << strlen(cdata); strcpy(cdata, data.data()); qDebug() << strlen(cdata); qDebug() << cdata; int st, sst; char str[40]; sscanf(cdata, "%d;%d;%s",&st,&sst,str); switch (st) { case STAT_OK: qDebug() << "received stat_ok"; break; case STAT_ERROR: qDebug() << "received stat_error"; break; default: qDebug() << "undefined status"; } qDebug() << st; QString logMsg(data); /** * verarbeite den string */ qDebug() << logMsg; statusLabel->setText(logMsg); }