AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi XML-String über TCP empfangen
Thema durchsuchen
Ansicht
Themen-Optionen

XML-String über TCP empfangen

Ein Thema von Rungholt · begonnen am 10. Mai 2007 · letzter Beitrag vom 11. Mai 2007
 
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: XML-String über TCP empfangen

  Alt 11. Mai 2007, 09:10
Du brauchst keine Größenangabe, da du durch die XML Struktur immer feststellen kann, wann diese wieder vollständig (geschlossen ist). Dein grundlegendes Problem ist einfach nur, dass du mehrfach aufgerufen wirst, bis alle Daten empfangen wurden (bzw. du mehrfach Datan abholen musst). Dabei können die Daten an beliebiger Stelle getrennt werden. Von daher folgende Vorgehensweise:

1. Ein Buffer anlegen - am besten dynamisch. Es eignet sich z.B. ein TMemoryStream.
2. Alle abgeholten Datenpackete in diesen Stream schreiben (immer hinten dran)
3. Wenn du mal wieder was in den MemoryStream geschrieben hast, dann kannst du die Daten verarbeiten. Dazu musst du wissen, ob die Daten vollständig sind - und das kann dir dein XML Provider sagen. Der weiss genau, ob die XML Struktur vollständig ist (sprich: gibt es zum Hauptknoten-Tag auch ein schliessendes Tag). Wenn dies der Fall ist, weiss er auch wo die Daten eines XML Packetes aufhören. Damit kannst du diesen Teil vorne aus dem MemoryStream entfernen. Dieses so lange wiederholen bis der MemoryStream eine Grösse von 0 hat (Idealfall, alles interpretierbar, da alles vollständig) oder der XML Provider sagt, dass ist noch nicht vollständig.

So sollte der grundlegende Weg sein. Nun ist offen wie du deinen XML Provider entlocken kannst, wie gross die Daten sind und bis wo in dem Stream eine komplette, gültige Struktur geht und ob sie gültig (komplett) ist.

Die String selber parsen um das Ende zu ermitteln (ob es enthalten ist) wäre ein möglicher Schnellschluss. Wenn der Hauptknoten immer gleich heisst, dann kannst du fest nach dem Ende-Tag des Knotens im String suchen, selber aufteilen und aus dem Stream löschen und entsprechend auch einen schon fertig aufbereiteten Stream deinem XML Provider geben.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz