2016-05-02 7 views
1

Ich muss kontinuierlich XML-Daten von meinem PC an mein Tablet senden. (beide laufen Windows)Einfachste Möglichkeit, XML-Daten in QTcpSocket kontinuierlich zu senden

Mein Tablet sollte die vollständige XML-Datei erhalten und in Echtzeit zeigen.

Die XML-Datei besteht jedes Mal aus einer Benachrichtigung, wenn sie gesendet wird. Es ist vom Typ:

<notification> 
<id>1</id> 
<message>hello world</message> 
</notification> 

Welche der einfachste Weg, es QTcpSocket mit zu tun ist?

+0

Senden Sie den nie endenden Stream als einzelnes XML-Dokument oder wird es eine fortlaufende * Verbindung * sein, an die Sie mehrere XML-Dokumente senden? –

+0

Neben meiner vorherigen Abfrage ist TCP ein * Streaming * -Protokoll. Der Start des Streams ist, wenn die Verbindung akzeptiert wird, das Ende, wenn die Verbindung geschlossen wird. Dazwischen gibt es keine Nachrichtengrenzen, es ist nur ein endloser Datenstrom. –

+0

@JoachimPileborg: Ich habe gelesen, dass ich mich um die gesendeten Daten kümmern sollte. Da Daten nicht vollständig gesendet werden, könnte es in mehreren Paketen abgeschnitten werden. die ein Protokoll implementieren müssen, um sicherzustellen, dass die vollständige XML-Datei gelesen wird. – ProEns08

Antwort

1

Sie akzeptieren einfach alle Daten und analysieren sie kontinuierlich.

Lassen Sie uns sagen, dass Sie, um Daten zwischen zwei Tags suchen:

<notification> 
     : 
    data 
     : 
</notification> 

Dann würden Sie wie folgt vor:

  • alle eingehenden Daten zu lesen, bis Sie den ersten Tag (ich sehe vermute, du würdest alles vorher als fehlerhaft abwerfen).

  • Wenn Sie das Start-Tag erhalten, öffnen Sie Ihre Datei und starten Sie alle Daten in Ihre Datei zu speichern und starten Sie die Suche nach dem End-Tag.

  • Wenn Sie in dem End-Tag lesen und dann die Dateien schließen und wieder Scannen nach dem Start-Tag beginnen (dh in den Startzustand zurück) ...

Sie brauchen nur ein machen kleine Zustandsmaschine (benötigt wahrscheinlich nur eine Variable mit zwei Zuständen: SCANNING_FOR_START und STORING_DATA_AND_SCANNING_FOR_END).

+0

Danke, +1. für die Antwort. – ProEns08

Verwandte Themen