XML Daten streamen
Verfasst: 18. Februar 2017 23:17
Hallo!
Ich würde gerne von meinem Client Daten von einem Server empfangen. Der Server verschickt regelmäßig XML Text(zb. Server Zeit). Wenn ich mich als Client verbinde, und zb ALL schicke, dann sendet er unterschiedlich viele Informationen in unterschiedlichen Größen.
Wenn ich in meinem Client eine Verbindung mit dem Server erstelle und ALL schreibe, dann bekomme ich den ersten Datensatz.
So weit so gut. Nun dachte ich, dass ich alle Daten empfangen kann, welche der Server schickt, stelle ich auf eine Signal Slot Kommunikation um. Ich dachte, dass ich mit dem Signal ReadRead die Information erhalte, wenn neue Daten verfügbar sind und ich diese verarbeiten kann:
Nur leider funktioniert das überhaupt nicht. Ich habe versucht in den verschiedensten Foren Lösungen zu finden, aber leider schaffe ich es nicht. Sorry, wenn ich euch mit derart langweiligen Fragen nerve. Ich wäre euch wirklich dankbar, wenn ihr mir helfen könnt.....
Liebe Grüße,
Jürgen.
Ich würde gerne von meinem Client Daten von einem Server empfangen. Der Server verschickt regelmäßig XML Text(zb. Server Zeit). Wenn ich mich als Client verbinde, und zb ALL schicke, dann sendet er unterschiedlich viele Informationen in unterschiedlichen Größen.
Wenn ich in meinem Client eine Verbindung mit dem Server erstelle und ALL schreibe, dann bekomme ich den ersten Datensatz.
Code: Alles auswählen
socket->connectToHost(Server, Port);
if(socket->waitForConnected(3000))
{
qDebug() << "Connected!";
socket->write("<all/>");
socket->waitForBytesWritten(1000);
socket->waitForReadyRead(3000);
qDebug() << "Reading: " << socket->bytesAvailable();
qDebug() << socket->readAll();
socket->close();
return "Connected";
}
Code: Alles auswählen
connect(socket, SIGNAL(connected()),this, SLOT(connected()));
connect(socket, SIGNAL(disconnected()),this, SLOT(disconnected()));
connect(socket, SIGNAL(bytesWritten(qint64)),this, SLOT(bytesWritten(qint64)));
connect(socket, SIGNAL(readyRead()),this, SLOT(readyRead()));
....
void SocketTest::connected()
{
qDebug() << "connected...slot";
// socket->write("<all/>");
}
void SocketTest::readyRead()
{
qDebug() << "Reading: " << socket->bytesAvailable();
qDebug() << socket->readAll();
}
Liebe Grüße,
Jürgen.